annotate gtk4/dw.c @ 2690:755d9ad07aaf

Android: Fix state exception by calling notifyDataSetChanged() on DWListBox. Avoid warnings creating bitmaps from resources by not calling setImageResource() unless the resource ID is greater than 65535. Use App ID when logging messages.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Sun, 31 Oct 2021 12:59:45 +0000
parents 3b3be9f7f452
children 85917c0c52f1
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 *
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6 * (C) 2000-2021 Brian Smith <brian@dbsoft.org>
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7 * (C) 2003-2011 Mark Hessling <mark@rexx.org>
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__) {
2321
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
61 #define DW_FUNCTION_ADD_PARAM void **_args = alloca(sizeof(void *)*2); \
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
62 _args[0] = (void *)pthread_getspecific(_dw_event_key); \
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
63 _args[1] = (void *)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
64 #define DW_FUNCTION_ADD_PARAM1(param1) void **_args = alloca(sizeof(void *)*3); \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
65 _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
66 _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
67 _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
68 #define DW_FUNCTION_ADD_PARAM2(param1, param2) void **_args = alloca(sizeof(void *)*4); \
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[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
70 _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
71 _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
72 _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
73 #define DW_FUNCTION_ADD_PARAM3(param1, param2, param3) void **_args = alloca(sizeof(void *)*5); \
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[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
75 _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
76 _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
77 _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
78 _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
79 #define DW_FUNCTION_ADD_PARAM4(param1, param2, param3, param4) void **_args = alloca(sizeof(void *)*6); \
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; \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
85 _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
86 #define DW_FUNCTION_ADD_PARAM5(param1, param2, param3, param4, param5) void **_args = alloca(sizeof(void *)*7); \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
87 _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
88 _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
89 _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
90 _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
91 _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
92 _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
93 _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
94 #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
95 void **_args = alloca(sizeof(void *)*8); \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
96 _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
97 _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
98 _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
99 _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
100 _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
101 _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
102 _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
103 _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
104 #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
105 void **_args = alloca(sizeof(void *)*9); \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
106 _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
107 _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
108 _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
109 _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
110 _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
111 _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
112 _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
113 _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
114 _args[8] = (void *)&param7;
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
115 #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
116 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
117 _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
118 _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
119 _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
120 _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
121 _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
122 _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
123 _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
124 _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
125 _args[8] = (void *)&param7; \
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[9] = (void *)&param8;
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
127 #define DW_FUNCTION_ADD_PARAM9(param1, param2, param3, param4, param5, param6, param7, param8, param9) \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
128 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
129 _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
130 _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
131 _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
132 _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
133 _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
134 _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
135 _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
136 _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
137 _args[8] = (void *)&param7; \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
138 _args[9] = (void *)&param8; \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
139 _args[10] = (void *)&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
140 #define DW_FUNCTION_ADD_PARAM10(param1, param2, param3, param4, param5, param6, param7, param8, param9, param10) \
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 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
142 _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
143 _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
144 _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
145 _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
146 _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
147 _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
148 _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
149 _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
150 _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
151 _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
152 _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
153 _args[11] = (void *)&param10;
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 #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
155 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
156 _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
157 _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
158 _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
159 _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
160 _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
161 _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
162 _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
163 _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
164 _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
165 _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
166 _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
167 _args[11] = (void *)&param10; \
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[12] = (void *)&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
169 #define DW_FUNCTION_ADD_PARAM12(param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12) \
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 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
171 _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
172 _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
173 _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
174 _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
175 _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
176 _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
177 _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
178 _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
179 _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
180 _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
181 _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
182 _args[11] = (void *)&param10; \
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
183 _args[12] = (void *)&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
184 _args[13] = (void *)&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
185 #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
186 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
187 #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
188 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
189 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
190 #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
191 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
192 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
193 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
194 #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
195 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
196 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
197 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
198 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
199 #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
200 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
201 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
202 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
203 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
204 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
205 #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
206 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
207 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
208 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
209 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
210 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
211 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
212 #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
213 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
214 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
215 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
216 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
217 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
218 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
219 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
220 #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
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]); \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
223 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
224 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
225 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
226 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
227 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
228 vartype8 param8 = *((vartype8 *)_args[9]);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
229 #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
230 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
231 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
232 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
233 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
234 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
235 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
236 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
237 vartype8 param8 = *((vartype8 *)_args[9]); \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
238 vartype9 param9 = *((vartype9 *)_args[10]);
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
239 #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
240 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
241 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
242 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
243 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
244 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
245 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
246 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
247 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
248 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
249 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
250 #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
251 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
252 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
253 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
254 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
255 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
256 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
257 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
258 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
259 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
260 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
261 vartype11 param11 = *((vartype11 *)_args[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
262 #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
263 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
264 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
265 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
266 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
267 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
268 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
269 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
270 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
271 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
272 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
273 vartype11 param11 = *((vartype11 *)_args[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
274 vartype12 param12 = *((vartype12 *)_args[13]);
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
275 #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
276 #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
277 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
278 _##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
279 else { \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
280 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
281 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
282 }\
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
283 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
284 #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
285 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
286 _##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
287 else { \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
288 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
289 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
290 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
291 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
292 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
293 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
294 } \
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
295 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
296 #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
297 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
298 _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
299 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
300 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
301 #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
302 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
303 #else
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
304 #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
305 #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
306 #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
307 #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
308 #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
309 #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
310 #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
311 #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
312 #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
313 #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
314 #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
315 #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
316 #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
317 #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
318 #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
319 #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
320 #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
321 #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
322 #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
323 #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
324 #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
325 #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
326 #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
327 #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
328 #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
329 #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
330 #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
331 #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
332 #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
333 #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
334 #endif
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
335
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
336 /* 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
337 * 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
338 * 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
339 * 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
340 * 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
341 * 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
342 * 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
343 */
2626
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
344 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
345 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
346 { 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
347 { 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
348 { 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
349 { 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
350 { 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
351 { 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
352 { 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
353 { 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
354 { 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
355 { 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
356 { 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
357 { 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
358 { 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
359 { 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
360 { 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
361 { 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
362 };
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
363
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
364 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
365 * 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
366 */
2315
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
367 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
368 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
369 ".xpm",
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
370 ".png",
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
371 ".ico",
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
372 ".icns",
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
373 ".gif",
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
374 ".jpg",
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
375 ".jpeg",
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
376 ".tiff",
2312
ada8f7610df0 GTK4: Fix building with -D_DW_SINGLE_THREADED and code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2311
diff changeset
377 ".bmp",
ada8f7610df0 GTK4: Fix building with -D_DW_SINGLE_THREADED and code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2311
diff changeset
378 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
379 };
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
380
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
381 #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
382 # 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
383 #endif
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
384
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
385 #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
386 # 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
387 #endif
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
388
2337
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
389 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
390 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
391 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
392
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
393 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
394
2337
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
395 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
396
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
397 #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
398 #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
399 #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
400 #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
401
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
402 #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
403
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
404 /* 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
405 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
406 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
407 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
408 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
409 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
410 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
411 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
412 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
413 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
414 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
415 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
416 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
417 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
418 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
419 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
420 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
421 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
422 #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
423 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
424 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
425 #endif
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
426 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
427
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
428 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
429 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
430 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
431 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
432 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
433 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
434
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
435 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
436 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
437 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
438 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
439 char gname[30];
2292
fa19fce045aa GTK4: Remove unnecessary parameter to the setup functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2291
diff changeset
440 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
441
2626
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
442 } 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
443
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
444 /* Signal setup function prototypes */
2292
fa19fce045aa GTK4: Remove unnecessary parameter to the setup functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2291
diff changeset
445 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
446 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
447 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
448 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
449 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
450 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
451 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
452 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
453 #ifdef USE_WEBKIT
2292
fa19fce045aa GTK4: Remove unnecessary parameter to the setup functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2291
diff changeset
454 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
455 #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
456
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
457 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
458 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
459 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
460 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
461 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
462 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
463 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
464
2626
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
465 } 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
466
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
467 /* 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
468 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
469 { _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
470 { _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
471 { _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
472 { _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
473 { _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
474 { _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
475 { _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
476 { _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
477 { _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
478 { _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
479 { _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
480 { _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
481 { _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
482 { _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
483 { _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
484 { _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
485 { _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
486 #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
487 { _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
488 { _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
489 #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
490 { 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
491 };
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
492
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
493 /* 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
494 #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
495 #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
496 #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
497 #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
498 #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
499
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
500 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
501 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
502 #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
503 /* 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
504 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
505
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
506 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
507 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
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 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
510 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
511 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
512 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
513
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
514 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
515 #else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
516 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
517 #endif
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
518 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
519
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
520 /* 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
521 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
522 {
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
523 int z=0;
2628
d3d8a93124f1 GTK4: Fix compilation after style standarization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2626
diff changeset
524 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
525
2626
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
526 while(DWSignalTranslate[z].func)
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
527 {
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
528 if(strcasecmp(signame, DWSignalTranslate[z].name) == 0)
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
529 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
530 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
531 }
2269
a26cfd4bbffe GTK4: More work on signal handlers, and disable the font CSS override.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2268
diff changeset
532 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
533 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
534
2626
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
535 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
536 {
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
537 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
538
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
539 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
540 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
541 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
542 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
543 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
544 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
545
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
546 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
547 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
548 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
549 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
550 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
551 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
552 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
553 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
554 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
555 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
556 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
557 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
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
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
560 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
561 {
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
562 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
563 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
564
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
565 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
566 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
567 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
568 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
569 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
570 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
571 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
572 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
573 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
574 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
575 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
576 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
577 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
578 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
579
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
580 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
581 {
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
582 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
583 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
584
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
585 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
586 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
587 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
588 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
589 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
590 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
591 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
592 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
593 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
594 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
595
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
596 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
597 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
598
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
599 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
600 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
601
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
602 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
603 {
2660
650f8b062317 GTK: Check the Connection ID is positive non-zero before removing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2628
diff changeset
604 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
605 {
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
606 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
607
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
608 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
609 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
610 }
650f8b062317 GTK: Check the Connection ID is positive non-zero before removing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2628
diff changeset
611 else
650f8b062317 GTK: Check the Connection ID is positive non-zero before removing.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2628
diff changeset
612 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
613 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
614
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
615 #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
616 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
617 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
618 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
619 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
620 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
621 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
622 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
623 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
624 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
625
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
626 _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
627 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
628 {
2626
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
629 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
630 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
631
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
632 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
633
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
634 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
635 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
636 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
637 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
638 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
639 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
640
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
641 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
642 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
643 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
644 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
645 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
646 _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
647 return;
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
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
650 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
651 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
652 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
653 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
654 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
655
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
656 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
657 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
658 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
659 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
660 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
661 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
662 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
663 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
664 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
665 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
666 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
667 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
668 _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
669 }
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
670
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
671 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
672 {
2626
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
673 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
674 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
675 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
676
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
677 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
678 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
679 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
680 break;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
681 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
682 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
683 break;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
684 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
685 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
686 break;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
687 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
688 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
689 break;
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(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
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 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
694
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
695 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
696 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
697 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
698 #endif
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
699
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
700 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
701 {
2626
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
702 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
703 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
704
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
705 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
706
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
707 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
708 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
709 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
710
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
711 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
712 }
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
713 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
714
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
715 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
716 {
2626
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
717 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
718 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
719
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
720 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
721 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
722 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
723 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
724
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
725 if(mybutton == 3)
2618
156ad91481eb WARNING: Standardize button press and release button parameter values.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2584
diff changeset
726 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
727 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
728 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
729
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
730 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
731 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
732 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
733 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
734
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
735 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
736 {
2626
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
737 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
738 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
739
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
740 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
741 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
742 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
743 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
744
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
745 if(mybutton == 3)
2618
156ad91481eb WARNING: Standardize button press and release button parameter values.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2584
diff changeset
746 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
747 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
748 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
749
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
750 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
751 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
752 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
753 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
754
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
755 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
756 {
2626
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
757 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
758 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
759
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
760 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
761 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
762 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
763 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
764 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
765 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
766
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
767 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
768 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
769 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
770 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
771 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
772 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
773
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
774 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
775 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
776 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
777 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
778
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
779 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
780 {
2626
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
781 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
782 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
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 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
785 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
786 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
787
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
788 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
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 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
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
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
793 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
794 {
2626
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
795 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
796 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
797
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
798 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
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 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
801 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
802 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
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 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
805
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
806 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
807 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
808 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
809 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
810 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
811
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
812 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
813 {
2626
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
814 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
815 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
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(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
818 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
819 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
820
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
821 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
822 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
823 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
824 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
825
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
826 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
827 {
2626
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
828 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
829 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
830
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
831 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
832 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
833 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
834
2269
a26cfd4bbffe GTK4: More work on signal handlers, and disable the font CSS override.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2268
diff changeset
835 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
836 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
837 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
838 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
839
2337
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
840 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
841 {
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
842 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
843 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
844
2365
77686ad495ba GTK3/4: Optimizing dirty list management. Keep list as short as possible.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2363
diff changeset
845 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
846 _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
847
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
848 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
849 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
850 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
851 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
852
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
853 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
854 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
855 {
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
856 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
857 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
858 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
859 /* 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
860 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
861 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
862 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
863 }
2365
77686ad495ba GTK3/4: Optimizing dirty list management. Keep list as short as possible.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2363
diff changeset
864 #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
865 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
866 #else
77686ad495ba GTK3/4: Optimizing dirty list management. Keep list as short as possible.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2363
diff changeset
867 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
868 #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
869 }
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
870
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
871 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
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 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
874
2281
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
875 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
876 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
877 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
878 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
879
2337
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
880 _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
881
2365
77686ad495ba GTK3/4: Optimizing dirty list management. Keep list as short as possible.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2363
diff changeset
882 /* 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
883 _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
884
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
885 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
886 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
887 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
888 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
889 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
890 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
891
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
892 /* 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
893 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
894 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
895 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
896 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
897 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
898 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
899
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
900 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
901 {
2626
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
902 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
903 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
904
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
905 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
906 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
907
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
908 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
909 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
910 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
911
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
912 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
913 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
914 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
915 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
916
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
917 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
918
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
919 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
920 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
921 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
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 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
924 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
925 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
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 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
928 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
929 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
930
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
931 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
932 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
933 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
934 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
935 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
936
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
937 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
938 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
939 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
940 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
941 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
942
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
943 #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
944 #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
945
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
946 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
947 {
2626
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
948 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
949 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
950
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
951 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
952 {
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
953 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
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(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
956 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
957 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
958 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
959 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
960 GtkWidget *widget = 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
961
2335
1d413d869fa2 GTK4: Trees/Containers were not passing correct data due to missing scrolled
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2334
diff changeset
962 /* 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
963 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
964 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
965
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
966 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
967 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
968 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
969 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
970 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
971
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
972 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
973 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
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 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
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 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
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 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
980 {
2470
8f7c2f20c7c0 GTK4: Fill in the row data for contatiner context.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2441
diff changeset
981 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
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 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
984 else
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 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
987
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
988 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
989 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
990 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
991 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
992
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
993 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
994 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
995 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
996 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
997 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
998 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
999 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1000 {
2470
8f7c2f20c7c0 GTK4: Fill in the row data for contatiner context.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2441
diff changeset
1001 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
1002 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1003 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1004 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
1005 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1006 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1007 }
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
1008 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
1009 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
1010 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
1011 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1012 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1013 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
1014 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1015
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
1016 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
1017 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1018 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
1019 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
1020
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1021 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
1022 {
2626
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
1023 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
1024
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1025 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
1026 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1027 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
1028 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
1029 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
1030 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
1031 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
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(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
1034 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1035 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
1036 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
1037 }
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 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
1040 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
1041 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1042 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
1043 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1044 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
1045 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
1046 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1047 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
1048 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1049 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
1050 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
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 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1053 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1054 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
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(path)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1057 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1058 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
1059
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1060 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
1061 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1062 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
1063
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1064 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
1065 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1066 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
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 }
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 else
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 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
1073
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1074 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
1075 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
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 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
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(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
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 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
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 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
1084 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
1085 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1086 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
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_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
1089 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
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 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1092 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1093 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
1094
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1095 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
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 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
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 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
1100 }
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 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1103 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
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 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1106 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
1107 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
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 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1110 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
1111 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1112
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
1113 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
1114 {
2626
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
1115 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
1116 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
1117
2317
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
1118 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
1119 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1120 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
1121 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
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 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
1124 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1125
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
1126 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
1127 {
2626
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
1128 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
1129 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
1130
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
1131 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
1132 {
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
1133 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
1134 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
1135 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
1136 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
1137 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
1138
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
1139 /* 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
1140 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
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 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
1143 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
1144 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
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 /* 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
1147 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
1148 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1149 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
1150 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
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 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
1153 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
1154 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1155 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
1156
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1157 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
1158 {
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(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
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 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
1162 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
1163 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
1164 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
1165 }
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_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
1168 }
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 }
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 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
1173 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1174
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
1175 /* 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
1176 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
1177 {
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
1178 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
1179 _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
1180 }
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
1181
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1182 /* 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
1183 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
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 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
1186 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
1187 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
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 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
1190 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1191 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
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 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
1194 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
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 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1197 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
1198 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1199
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1200
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
1201 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
1202 {
2626
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
1203 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
1204 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
1205
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1206 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
1207 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1208 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
1209 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
1210 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1211 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
1212 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1213
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
1214 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
1215 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1216 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
1217 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
1218
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1219 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
1220 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1221 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
1222 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
1223
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1224 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
1225 {
2626
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
1226 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
1227
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1228 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
1229 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
1230
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(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
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 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
1234 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
1235 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
1236 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1237 }
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 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
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
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1242 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
1243 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1244 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
1245
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1246 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
1247 newval++;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1248
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1249 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
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
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
1252 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
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 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
1255 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
1256 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
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 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
1259 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
1260
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1261 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
1262 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
1263 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
1264
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1265 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
1266 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
1267
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1268 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
1269 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
1270
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
1271 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
1272 {
2626
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
1273 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
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 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
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 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
1278
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1279 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
1280 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
1281 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1282 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
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 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1285 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
1286 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1287
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
1288 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
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 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
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 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
1293 {
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
1294 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
1295 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1296 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
1297 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
1298 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1299 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
1300 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1301 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1302 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
1303 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1304
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
1305 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
1306 {
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
1307 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
1308
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
1309 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
1310 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
1311 }
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
1312
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1313 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
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 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
1316
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
1317 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
1318 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
1319 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1320
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
1321 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
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 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
1324 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
1325
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1326 /* 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
1327 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
1328 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
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(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
1331 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
1332 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1333 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
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 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
1336 *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
1337 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
1338 *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
1339
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1340 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
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
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1343 /* 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
1344 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
1345 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1346 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
1347 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
1348 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
1349
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1350 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
1351 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
1352 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
1353 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
1354 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
1355 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
1356
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1357 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
1358 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
1359 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1360
2273
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
1361 /* Handle menu click callbacks */
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
1362 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
1363 {
2626
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
1364 DWSignalHandler work = _dw_get_signal_handler(data);
2317
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
1365 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
1366
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
1367 /* 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
1368 if(action_state)
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
1369 {
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
1370 gboolean active = g_variant_get_boolean(action_state);
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
1371 GVariant *new_state = g_variant_new_boolean(!active);
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
1372 g_simple_action_set_state(action, new_state);
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
1373 }
2273
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
1374
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
1375 if(work.window)
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
1376 {
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
1377 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
1378
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
1379 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
1380 }
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
1381 }
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
1382
2276
d7f0254f7d1e GTK4: Attempt fixing box and item padding using gtk_widget_set_margin_*().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2275
diff changeset
1383 /* 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
1384 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
1385 {
d7f0254f7d1e GTK4: Attempt fixing box and item padding using gtk_widget_set_margin_*().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2275
diff changeset
1386 /* 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
1387 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
1388 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
1389 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
1390 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
1391 }
d7f0254f7d1e GTK4: Attempt fixing box and item padding using gtk_widget_set_margin_*().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2275
diff changeset
1392
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1393 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
1394 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1395 /* 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
1396 * 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
1397 * 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
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 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1400
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1401 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1402 * 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
1403 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1404 * 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
1405 * 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
1406 */
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
1407 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
1408 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1409 /* 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
1410 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
1411 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1412 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
1413 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
1414 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
1415
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1416 /* 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
1417 * 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
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(pos)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1420 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1421 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
1422 *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
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
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1425 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
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 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
1428
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1429 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
1430 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
1431 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1432 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
1433 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
1434 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
1435 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
1436 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1437 /* 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
1438 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
1439 }
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(pathcopy)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1442 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
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 /* 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
1445 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
1446 _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
1447
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1448 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
1449
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
1450 _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
1451 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
1452
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1453 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
1454 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
1455 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
1456
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1457 _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
1458
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1459 /* 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
1460 _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
1461
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1462 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
1463 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1464 /* 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
1465 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
1466 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1467
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1468 /* 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
1469 * 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
1470 * 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
1471 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1472 _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
1473 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
1474 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1475 /* 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
1476 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
1477
58700e9fcba3 GTK3/4: Add call to g_set_prgname() with the Application ID.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2329
diff changeset
1478 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
1479 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
1480 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
1481 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
1482 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
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 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
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
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1487 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1488 * 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
1489 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1490 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
1491 {
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
1492 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
1493
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
1494 _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
1495 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
1496 _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
1497 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1498
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 * 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
1501 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1502 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
1503 {
2265
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
1504 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
1505 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1506
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 * 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
1509 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1510 * 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
1511 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1512 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
1513 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1514 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
1515 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
1516
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1517 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
1518
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_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
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 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
1522
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1523 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
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 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
1526 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1527 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
1528 _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
1529 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
1530 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
1531 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1532 _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
1533 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
1534 _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
1535 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
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 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1538 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1539 _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
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
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 * 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
1544 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1545 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
1546 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1547 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
1548 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
1549
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1550 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
1551 _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
1552 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
1553 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
1554 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1555 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
1556 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
1557 _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
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
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1560 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1561 * 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
1562 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1563 * 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
1564 * 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
1565 */
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
1566 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
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 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
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 * 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
1573 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1574 * 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
1575 */
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
1576 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
1577 {
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
1578 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
1579
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
1580 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
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 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
1583 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
1584 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
1585 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
1586 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
1587 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1588 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
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 * 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
1593 * 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
1594 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1595 * 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
1596 * 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
1597 */
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
1598 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
1599 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1600 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
1601 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
1602 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
1603 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1604 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
1605 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
1606 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
1607 }
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 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1610 * 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
1611 * 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
1612 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1613 * 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
1614 */
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
1615 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
1616 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1617 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
1618
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1619 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
1620 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
1621
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
1622 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
1623 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1624 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
1625 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
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 else
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 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
1630 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
1631 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1632
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1633 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
1634 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
1635 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
1636 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
1637 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
1638 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1639
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1640 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1641 * 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
1642 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1643 * 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
1644 * ...: 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
1645 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1646 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
1647 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1648 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
1649 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
1650
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1651 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
1652 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
1653 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
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 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
1656 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1657
2327
0d7f8136d771 GTK4: Move dw_messagebox() into thread safety protection using dw_messagebox_int().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2326
diff changeset
1658 /* 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
1659 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
1660 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
1661 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
1662 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
1663 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1664 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
1665 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
1666 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
1667 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
1668 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
1669 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
1670
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1671 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
1672 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
1673 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
1674 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
1675 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
1676 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
1677 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
1678 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
1679
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1680 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
1681 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
1682 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
1683 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
1684
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1685 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
1686 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
1687 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
1688 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
1689 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
1690 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
1691 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
1692 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
1693 /* 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
1694 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
1695 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
1696 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
1697 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
1698 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
1699 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
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 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
1702 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
1703 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
1704 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
1705 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
1706 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
1707 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
1708 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
1709 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
1710 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
1711 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
1712 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
1713 default:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1714 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1715 /* 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
1716 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
1717 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
1718 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
1719 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
1720 }
0d7f8136d771 GTK4: Move dw_messagebox() into thread safety protection using dw_messagebox_int().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2326
diff changeset
1721 }
0d7f8136d771 GTK4: Move dw_messagebox() into thread safety protection using dw_messagebox_int().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2326
diff changeset
1722 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
1723 }
0d7f8136d771 GTK4: Move dw_messagebox() into thread safety protection using dw_messagebox_int().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2326
diff changeset
1724
0d7f8136d771 GTK4: Move dw_messagebox() into thread safety protection using dw_messagebox_int().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2326
diff changeset
1725 /*
0d7f8136d771 GTK4: Move dw_messagebox() into thread safety protection using dw_messagebox_int().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2326
diff changeset
1726 * 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
1727 * Parameters:
0d7f8136d771 GTK4: Move dw_messagebox() into thread safety protection using dw_messagebox_int().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2326
diff changeset
1728 * 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
1729 * 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
1730 * 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
1731 * ...: 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
1732 */
0d7f8136d771 GTK4: Move dw_messagebox() into thread safety protection using dw_messagebox_int().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2326
diff changeset
1733 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
1734 {
0d7f8136d771 GTK4: Move dw_messagebox() into thread safety protection using dw_messagebox_int().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2326
diff changeset
1735 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
1736 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
1737
0d7f8136d771 GTK4: Move dw_messagebox() into thread safety protection using dw_messagebox_int().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2326
diff changeset
1738 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
1739 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
1740 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
1741
0d7f8136d771 GTK4: Move dw_messagebox() into thread safety protection using dw_messagebox_int().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2326
diff changeset
1742 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
1743 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1744
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1745 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1746 * 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
1747 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1748 * 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
1749 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1750 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
1751 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
1752 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
1753 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
1754 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1755 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
1756
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
1757 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
1758 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
1759 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
1760 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1761
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1762 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1763 * 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
1764 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1765 * 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
1766 */
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
1767 #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
1768 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
1769 {
2265
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
1770 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
1771 }
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
1772 #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
1773 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
1774 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
1775 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
1776 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
1777 {
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
1778 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
1779 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
1780
610c66b17fbc GTK4: Put Xlib calls in GDK_IS_X11_DISPLAY() code checks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2323
diff changeset
1781 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
1782 {
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
1783 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
1784
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
1785 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
1786 {
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
1787 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
1788 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
1789 }
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
1790 }
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
1791 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
1792 }
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
1793 #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
1794
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1795 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1796 * 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
1797 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1798 * 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
1799 */
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
1800 #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
1801 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
1802 {
2265
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
1803 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
1804 }
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
1805 #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
1806 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
1807 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
1808 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
1809 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
1810 {
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
1811 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
1812 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
1813
610c66b17fbc GTK4: Put Xlib calls in GDK_IS_X11_DISPLAY() code checks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2323
diff changeset
1814 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
1815 {
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
1816 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
1817
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
1818 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
1819 {
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
1820 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
1821 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
1822 }
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
1823 }
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
1824 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
1825 }
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
1826 #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
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 * 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
1830 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1831 * 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
1832 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1833 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
1834 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
1835 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
1836 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
1837 {
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 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
1839
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 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
1841 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1842 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
1843 {
2369
5b3b51ba5239 GTK4: Minor code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2368
diff changeset
1844 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
1845
2368
ec90b552b266 GTK4: Switch to using gtk_window_present() in dw_window_show().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2367
diff changeset
1846 gtk_window_present(GTK_WINDOW(handle));
2369
5b3b51ba5239 GTK4: Minor code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2368
diff changeset
1847
5b3b51ba5239 GTK4: Minor code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2368
diff changeset
1848 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
1849 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
1850 }
2368
ec90b552b266 GTK4: Switch to using gtk_window_present() in dw_window_show().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2367
diff changeset
1851 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
1852 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
1853 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1854 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
1855 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1856
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1857 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1858 * 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
1859 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1860 * 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
1861 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1862 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
1863 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
1864 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
1865 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
1866 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1867 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
1868
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1869 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
1870 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
1871 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
1872 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1873
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1874 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1875 * 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
1876 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1877 * 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
1878 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1879 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
1880 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
1881 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
1882 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
1883 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1884 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
1885
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1886 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
1887 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1888 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
1889 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
1890 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
1891 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1892 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
1893
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1894 /* 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
1895 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
1896 {
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1897 /* 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
1898 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
1899 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
1900 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
1901
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1902 /* 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
1903 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
1904 {
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1905 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
1906 {
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1907 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
1908 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1909 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
1910 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
1911 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
1912 }
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1913 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1914 }
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1915 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
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 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
1918 {
2305
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 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
1920 {
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 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
1922 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
1923 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
1924 }
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1925 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1926 }
2305
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
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1928 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
1929 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1930 /* 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
1931 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
1932 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
1933 }
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1934 }
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1935 /* 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
1936 * 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
1937 */
2329
47f8f950f377 GTK4: Fix crash by stopping processing after removing widget from the box.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2328
diff changeset
1938 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
1939 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
1940 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1941 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
1942 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
1943 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1944
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1945 /* 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
1946 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1947 * 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
1948 */
2328
5363f953b22a GTK4: Implement dw_window_redraw() for render/drawing area widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2327
diff changeset
1949 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
1950 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
1951 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
1952 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
1953 {
5363f953b22a GTK4: Implement dw_window_redraw() for render/drawing area widgets.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2327
diff changeset
1954 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
1955 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
1956 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
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 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1960 * 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
1961 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1962 * 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
1963 * 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
1964 */
2305
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_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
1966 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
1967 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
1968 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
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 && 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
1971 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
1972 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
1973 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1974
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1975 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1976 * 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
1977 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1978 * 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
1979 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1980 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
1981 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1982 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
1983
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1984 _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
1985
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1986 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
1987 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
1988 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1989
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1990 /* 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
1991 * 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
1992 */
2315
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
1993 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
1994 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1995 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
1996
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1997 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
1998 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
1999 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
2000 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
2001 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
2002
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2003 /* 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
2004 * 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
2005 * 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
2006 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2007 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
2008 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2009 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
2010 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
2011 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
2012
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2013 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
2014 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
2015
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2016 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
2017 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
2018 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2019 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2020 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
2021 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2022
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2023 /* 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
2024 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
2025 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2026 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
2027 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
2028 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
2029
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2030 /* 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
2031 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
2032 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2033 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
2034 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
2035 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
2036 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2037
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2038 /* 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
2039 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
2040 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2041 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
2042 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
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 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
2045 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
2046 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
2047 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
2048 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
2049 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2050 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
2051 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
2052 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2053
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2054 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
2055 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2056 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
2057 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
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 /* 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
2060 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
2061 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2062 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
2063 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
2064 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
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
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2067 /* 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
2068 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
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 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
2071
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2072 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
2073 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
2074 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
2075 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
2076 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2077 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
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
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 * 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
2082 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2083 * 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
2084 * 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
2085 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2086 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
2087 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
2088 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
2089 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
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 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
2092 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
2093 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
2094 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
2095
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2096 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
2097 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2098 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
2099 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
2100 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
2101 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2102 /* 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
2103 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
2104 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2105 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
2106 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
2107 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
2108 }
2265
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
2109 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
2110 {
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
2111 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
2112 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
2113 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
2114 }
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
2115 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
2116 {
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
2117 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
2118 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
2119 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
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 /* 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
2123 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
2124 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
2125 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
2126 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
2127
2325
55524dbe6a54 GTK4: The font crash seems to affect GtkDrawingArea. So reenable the widget
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2324
diff changeset
2128 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
2129 _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
2130
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2131 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
2132 }
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 /* 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
2135 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2136 * 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
2137 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2138 * 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
2139 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2140 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
2141 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
2142 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
2143 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
2144 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2145 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
2146 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
2147 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
2148 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
2149 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
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 /* 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
2152 * 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
2153 * 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
2154 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2155 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
2156 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2157 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
2158 *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
2159 name++;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2160 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
2161 }
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 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
2164 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
2165 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2166 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
2167 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
2168 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2169
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2170 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
2171 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
2172
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
2173 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
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 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
2176 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
2177 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2178 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
2179 /* 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
2180 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
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 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
2183
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2184 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
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 x--;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2187 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2188 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
2189 /* 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
2190 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
2191 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2192 /* 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
2193 * 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
2194 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2195 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
2196 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
2197 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2198 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2199 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
2200 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2201 }
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
2202 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
2203 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
2204 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
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
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2207 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2208 * 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
2209 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2210 * 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
2211 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2212 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
2213 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
2214 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
2215 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
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 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
2218 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
2219 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
2220 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
2221 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
2222
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2223 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
2224 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2225 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
2226 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
2227 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
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 /* 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
2230 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
2231 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2232 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
2233 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
2234 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
2235 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2236
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
2237 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
2238 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
2239 {
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
2240 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
2241 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
2242 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2243 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
2244
2337
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
2245 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
2246 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
2247 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
2248 /* 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
2249 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
2250 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2251 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
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 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
2254 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
2255 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2256 x--;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2257 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2258 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
2259 /* 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
2260 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
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 /* 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
2263 * 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
2264 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2265 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
2266 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
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 }
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
2269 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
2270 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2271 }
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2272 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
2273 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2274
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2275 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
2276 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2277 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
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 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
2280 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
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 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
2283
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2284 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
2285 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
2286 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2287
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2288 /* 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
2289 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
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 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
2292 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
2293
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2294 _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
2295
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2296 *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
2297 *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
2298
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2299 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
2300 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
2301 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2302
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2303 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
2304 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2305 /* 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
2306 * 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
2307 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2308 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
2309
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(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
2311 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2312 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
2313 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
2314 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
2315 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
2316 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2317 else if(fore != DW_CLR_DEFAULT)
2626
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
2318 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
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 _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
2321
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2322 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
2323 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2324 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
2325 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
2326 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
2327 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
2328 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2329 else if(back != DW_CLR_DEFAULT)
2626
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
2330 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
2331
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2332 _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
2333
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2334 _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
2335
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2336 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
2337 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2338 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2339 * 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
2340 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2341 * 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
2342 * 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
2343 * 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
2344 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2345 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
2346 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
2347 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
2348 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
2349 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2350 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
2351 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
2352
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2353 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
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 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
2356 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
2357 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
2358 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2359
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2360 _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
2361
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2362 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
2363 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2364
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 * 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
2367 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2368 * 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
2369 * 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
2370 */
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
2371 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
2372 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2373 /* TODO */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2374 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
2375 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2376
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2377 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2378 * 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
2379 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2380 * 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
2381 * 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
2382 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2383 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
2384 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
2385 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
2386 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
2387 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2388 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
2389 {
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
2390 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
2391 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
2392 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
2393 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
2394 }
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
2395 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
2396 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
2397 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
2398 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
2399 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
2400 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
2401 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
2402 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
2403 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
2404 }
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 /*
2321
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2407 * 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
2408 * Parameters:
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2409 * 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
2410 */
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2411 #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
2412 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
2413 {
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2414 }
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2415 #else
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2416 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
2417
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2418 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
2419 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
2420 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
2421 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
2422 {
2324
610c66b17fbc GTK4: Put Xlib calls in GDK_IS_X11_DISPLAY() code checks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2323
diff changeset
2423 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
2424
610c66b17fbc GTK4: Put Xlib calls in GDK_IS_X11_DISPLAY() code checks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2323
diff changeset
2425 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
2426 {
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2427 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
2428
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2429 if(surface)
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2430 {
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2431 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
2432 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
2433 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
2434 _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
2435
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2436 }
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2437 }
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2438 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
2439 }
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2440 #endif
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2441
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2442 /*
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2443 * 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
2444 */
2321
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2445 #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
2446 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
2447 {
2321
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2448 }
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2449 #else
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2450 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
2451 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
2452 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
2453 {
2324
610c66b17fbc GTK4: Put Xlib calls in GDK_IS_X11_DISPLAY() code checks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2323
diff changeset
2454 /* 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
2455 if(_DWXGrabbedDisplay)
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2456 {
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2457 XUngrabPointer(_DWXGrabbedDisplay, CurrentTime);
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2458 _DWXGrabbedDisplay = NULL;
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2459 }
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2460 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
2461 }
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
2462 #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
2463
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
2464 /* 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
2465 #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
2466
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2467 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2468 * 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
2469 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2470 * 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
2471 * 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
2472 * 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
2473 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2474 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
2475 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
2476 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
2477 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
2478 {
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
2479 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
2480 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
2481 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
2482
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
2483 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
2484
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
2485 /* 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
2486 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
2487 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
2488 /* 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
2489 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
2490 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
2491
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
2492 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
2493
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
2494 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
2495 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
2496 else
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
2497 {
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
2498 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
2499 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
2500
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
2501 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
2502 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
2503 }
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
2504
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
2505 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
2506 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
2507 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
2508 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
2509 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
2510 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
2511 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2512
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2513 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2514 * 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
2515 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2516 * 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
2517 * 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
2518 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
2519 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
2520 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
2521 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
2522 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
2523 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
2524 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
2525 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
2526 _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
2527 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
2528 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
2529 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2530
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2531 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2532 * 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
2533 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2534 * 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
2535 * 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
2536 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2537 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
2538 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
2539 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
2540 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
2541 {
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
2542 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
2543
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
2544 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
2545 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
2546
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2547 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
2548
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2549 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
2550 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
2551 _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
2552
2265
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
2553 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
2554 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
2555 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
2556 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
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_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
2559 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2560
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2561 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2562 * 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
2563 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2564 * 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
2565 * 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
2566 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2567 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
2568 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
2569 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
2570 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
2571 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2572 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
2573 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
2574
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2575 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
2576 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2577 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
2578 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
2579 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
2580 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
2581 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
2582 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
2583 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2584 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
2585 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2586
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2587 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2588 * 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
2589 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2590 * 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
2591 * 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
2592 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2593 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
2594 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
2595 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
2596 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
2597 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2598 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
2599 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
2600
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2601 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
2602 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2603 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
2604 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
2605 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
2606 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
2607 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
2608 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
2609 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2610 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
2611 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2612
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 * 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
2615 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2616 * 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
2617 * 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
2618 * 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
2619 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2620 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
2621 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
2622 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
2623 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
2624 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2625 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
2626 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
2627
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2628 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
2629 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
2630 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
2631 _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
2632 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
2633 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
2634 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
2635 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
2636 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
2637 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
2638 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2639
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2640 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2641 * 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
2642 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2643 * 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
2644 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2645 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
2646 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
2647 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
2648 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
2649 {
2366
b3efaae95735 GTK4: Apparenlty on GTK4 GtkImage is used for icons, switch to GtkPicture.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2365
diff changeset
2650 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
2651 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
2652 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
2653 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
2654 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
2655 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
2656 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
2657 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
2658 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2659
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2660 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2661 * 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
2662 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2663 * 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
2664 * 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
2665 */
2305
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 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
2667 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
2668 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
2669 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
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 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
2672
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2673 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
2674 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
2675 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
2676 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2677 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
2678 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
2679 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
2680 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
2681 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
2682 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
2683 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2684
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
2685 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
2686
3c3f0023ae02 GTK4: Fix menu action setup by adding code to install group actions into
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2289
diff changeset
2687 /* 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
2688 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
2689 {
3c3f0023ae02 GTK4: Fix menu action setup by adding code to install group actions into
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2289
diff changeset
2690 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
2691
3c3f0023ae02 GTK4: Fix menu action setup by adding code to install group actions into
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2289
diff changeset
2692 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
2693 {
3c3f0023ae02 GTK4: Fix menu action setup by adding code to install group actions into
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2289
diff changeset
2694 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
2695 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
2696
3c3f0023ae02 GTK4: Fix menu action setup by adding code to install group actions into
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2289
diff changeset
2697 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
2698
3c3f0023ae02 GTK4: Fix menu action setup by adding code to install group actions into
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2289
diff changeset
2699 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
2700 {
3c3f0023ae02 GTK4: Fix menu action setup by adding code to install group actions into
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2289
diff changeset
2701 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
2702 {
3c3f0023ae02 GTK4: Fix menu action setup by adding code to install group actions into
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2289
diff changeset
2703 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
2704 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
2705 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
2706
3c3f0023ae02 GTK4: Fix menu action setup by adding code to install group actions into
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2289
diff changeset
2707 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
2708
3c3f0023ae02 GTK4: Fix menu action setup by adding code to install group actions into
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2289
diff changeset
2709 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
2710 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
2711 }
3c3f0023ae02 GTK4: Fix menu action setup by adding code to install group actions into
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2289
diff changeset
2712 _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
2713 }
3c3f0023ae02 GTK4: Fix menu action setup by adding code to install group actions into
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2289
diff changeset
2714 }
3c3f0023ae02 GTK4: Fix menu action setup by adding code to install group actions into
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2289
diff changeset
2715 }
2289
26a76f94f8d8 GTK4: Added action groups to the menus, because everything says we need
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2288
diff changeset
2716
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 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2718 * 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
2719 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2720 * 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
2721 * 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
2722 */
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
2723 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
2724 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
2725 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
2726 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
2727 {
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
2728 GMenu *tmp = g_menu_new();
2288
d0bb8f99ac45 GTK4: Implement menu separators.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2287
diff changeset
2729 /* 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
2730 GMenu *section = g_menu_new();
d0bb8f99ac45 GTK4: Implement menu separators.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2287
diff changeset
2731 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
2732 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
2733
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
2734 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
2735
3c3f0023ae02 GTK4: Fix menu action setup by adding code to install group actions into
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2289
diff changeset
2736 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
2737 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
2738 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
2739 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
2740 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
2741 }
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 * 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
2745 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2746 * 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
2747 * 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
2748 * 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
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_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
2751 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
2752 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
2753 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
2754 {
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
2755 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
2756 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
2757
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(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
2759 (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
2760 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2761 /* 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
2762 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
2763 GMenu *menu = g_menu_new();
d0bb8f99ac45 GTK4: Implement menu separators.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2287
diff changeset
2764 /* 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
2765 GMenu *section = g_menu_new();
d0bb8f99ac45 GTK4: Implement menu separators.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2287
diff changeset
2766 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
2767 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
2768 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
2769
2288
d0bb8f99ac45 GTK4: Implement menu separators.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2287
diff changeset
2770 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
2771
2265
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
2772 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
2773 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
2774
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2775 /* 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
2776 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
2777 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
2778 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
2779 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
2780
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2781 /* 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
2782 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
2783 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
2784 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
2785 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
2786 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
2787 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
2788 _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
2789 }
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2790 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
2791 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2792
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2793 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2794 * 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
2795 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2796 * 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
2797 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2798 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
2799 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
2800 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
2801 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
2802 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2803 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
2804 {
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
2805 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
2806
2332
594111e84e89 GTK4: Save pointer to the activate popup menu for a window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2331
diff changeset
2807 /* 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
2808 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
2809 (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
2810 {
594111e84e89 GTK4: Save pointer to the activate popup menu for a window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2331
diff changeset
2811 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
2812 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
2813 else
594111e84e89 GTK4: Save pointer to the activate popup menu for a window.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2331
diff changeset
2814 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
2815 }
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2816 /* 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
2817 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
2818 {
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
2819 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
2820
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
2821 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
2822 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
2823 else
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
2824 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
2825 }
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
2826 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
2827 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
2828 *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
2829 }
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2830 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
2831 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2832
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
2833 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
2834 {
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2835 int z, cur=0;
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2836 char accel = '\0';
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2837
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2838 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
2839 {
2273
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2840 if(src[z] == '~')
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2841 {
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
2842 dest[cur] = '_';
2273
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2843 accel = src[z+1];
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2844 }
2272
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2845 else
2273
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2846 dest[cur] = src[z];
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2847 cur++;
2272
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2848 }
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2849 dest[cur] = 0;
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2850 return accel;
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2851 }
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2852
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2853
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2854 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2855 * 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
2856 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2857 * 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
2858 * 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
2859 * 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
2860 * 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
2861 * 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
2862 * 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
2863 * 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
2864 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2865 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
2866 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
2867 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
2868 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
2869 {
2273
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2870 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
2871 HWND tmphandle = NULL;
2272
2ce302c43f48 GTK4: Initial menu functionality... basic creation works... no callbacks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2271
diff changeset
2872 GMenuModel *menumodel;
2273
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2873 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
2874
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2875 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
2876 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2877 /* 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
2878 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
2879 _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
2880
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2881 /* 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
2882 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
2883 {
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 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
2885
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2886 /* 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
2887 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
2888 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
2889 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
2890 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
2891
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2892 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
2893 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
2894 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2895 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2896 {
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2897 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
2898
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2899 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
2900 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2901 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
2902 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2903 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
2904 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
2905
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2906 /* 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
2907 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
2908 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
2909
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2910 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
2911 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
2912 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
2913 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
2914 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
2915
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2916 /* 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
2917 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
2918 _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
2919 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2920 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2921 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
2922 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
2923 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
2924 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
2925 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
2926 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
2927
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
2928 /* 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
2929 * 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
2930 */
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
2931 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
2932 {
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
2933 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
2934
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
2935 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
2936 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
2937
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
2938 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
2939 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
2940 }
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
2941 /* 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
2942 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
2943 {
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
2944 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
2945
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
2946 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
2947 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
2948 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
2949 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
2950 }
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
2951
2305
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 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
2953 actionname = strchr(tempbuf, '.');
2317
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
2954 if(check)
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
2955 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
2956 else
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
2957 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
2958 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
2959 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
2960 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
2961 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
2962 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
2963 }
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
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(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
2967 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
2968 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
2969 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
2970
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 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
2972
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 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
2974 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
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 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
2977 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2978
2273
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2979 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
2980 {
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2981 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
2982 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
2983
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2984 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
2985 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
2986
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2987 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
2988 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2989 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
2990 GMenuItem *menuitem;
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2991 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
2992
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2993 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
2994
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
2995 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
2996 {
2273
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
2997 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
2998 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
2999 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3000 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3001 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
3002 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3003
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3004 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3005 * 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
3006 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3007 * 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
3008 * 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
3009 * 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
3010 * 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
3011 */
2317
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3012 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
3013 DW_FUNCTION_ADD_PARAM3(menu, cid, check)
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3014 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
3015 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
3016 {
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3017 if(menu)
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3018 {
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3019 char numbuf[25] = {0};
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3020 GMenuItem *tmphandle;
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3021
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3022 snprintf(numbuf, 24, "%lu", cid);
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3023 tmphandle = _dw_find_submenu_id(menu, numbuf);
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3024
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3025 if(tmphandle && G_IS_MENU_ITEM(tmphandle))
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3026 {
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3027 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
3028
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3029 if(action)
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3030 {
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3031 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
3032 gboolean thischeck = check;
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3033
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3034 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
3035 {
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3036 GVariant *new_state = g_variant_new_boolean(thischeck);
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3037 g_simple_action_set_state(action, new_state);
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3038 }
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3039 }
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3040 }
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3041 }
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3042 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
3043 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3044
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3045 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3046 * 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
3047 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3048 * 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
3049 * 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
3050 * 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
3051 */
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
3052 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
3053 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
3054 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
3055 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
3056 {
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
3057 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
3058 {
2317
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3059 char numbuf[25] = {0};
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3060 GMenuItem *tmphandle;
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3061
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
3062 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
3063 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
3064
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
3065 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
3066 {
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
3067 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
3068
2317
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3069 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
3070 {
2317
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3071 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
3072 {
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3073 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
3074 gboolean check = false;
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3075
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3076 if(state & DW_MIS_CHECKED)
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3077 check = true;
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3078
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3079 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
3080 {
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3081 GVariant *new_state = g_variant_new_boolean(check);
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3082 g_simple_action_set_state(action, new_state);
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3083 }
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3084 }
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3085 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
3086 {
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3087 if(state & DW_MIS_ENABLED)
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3088 g_simple_action_set_enabled(action, TRUE);
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3089 else
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3090 g_simple_action_set_enabled(action, FALSE);
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
3091 }
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
3092 }
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
3093 }
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
3094 }
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
3095 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
3096 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3097
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3098 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3099 * 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
3100 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3101 * 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
3102 * 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
3103 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3104 * 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
3105 */
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
3106 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
3107 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
3108 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
3109 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
3110 {
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
3111 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
3112 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
3113 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
3114
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
3115 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
3116 {
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
3117 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
3118 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
3119
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
3120 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
3121 {
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
3122 /* 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
3123 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
3124 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
3125 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
3126 }
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
3127 }
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
3128 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
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
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
3131 /* 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
3132 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
3133 {
6e47d510dbbb GTK4: Since GTK4 needs to add the popup menu to the parent widget...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2299
diff changeset
3134 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
3135 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
3136
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
3137 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
3138 (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
3139 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
3140 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
3141 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
3142 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
3143 }
6e47d510dbbb GTK4: Since GTK4 needs to add the popup menu to the parent widget...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2299
diff changeset
3144
6e47d510dbbb GTK4: Since GTK4 needs to add the popup menu to the parent widget...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2299
diff changeset
3145 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
3146 {
6e47d510dbbb GTK4: Since GTK4 needs to add the popup menu to the parent widget...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2299
diff changeset
3147 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
3148
6e47d510dbbb GTK4: Since GTK4 needs to add the popup menu to the parent widget...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2299
diff changeset
3149 /* 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
3150 * 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
3151 */
6e47d510dbbb GTK4: Since GTK4 needs to add the popup menu to the parent widget...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2299
diff changeset
3152 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
3153 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
3154 }
6e47d510dbbb GTK4: Since GTK4 needs to add the popup menu to the parent widget...
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2299
diff changeset
3155
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3156 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3157 * 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
3158 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3159 * 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
3160 * 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
3161 * 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
3162 * 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
3163 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3164 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
3165 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
3166 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
3167 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
3168 {
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
3169 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
3170 {
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
3171 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
3172 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
3173
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
3174 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
3175 {
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
3176 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
3177
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
3178 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
3179 {
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
3180 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
3181 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
3182 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
3183 }
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
3184 }
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
3185 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
3186 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
3187
2303
cdd8459add40 GTK4: Add code to setup the toplevel menu for popups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2302
diff changeset
3188 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
3189 {
cdd8459add40 GTK4: Add code to setup the toplevel menu for popups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2302
diff changeset
3190 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
3191 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
3192 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
3193
cdd8459add40 GTK4: Add code to setup the toplevel menu for popups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2302
diff changeset
3194 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
3195
cdd8459add40 GTK4: Add code to setup the toplevel menu for popups.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2302
diff changeset
3196 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
3197 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
3198 }
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
3199 _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
3200 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
3201 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
3202 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
3203 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
3204 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
3205 *menu = NULL;
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
3206 }
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3207 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
3208 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3209
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3210
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3211 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3212 * 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
3213 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3214 * 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
3215 * 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
3216 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3217 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
3218 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
3219 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
3220 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
3221 {
2278
18028fa53ef2 GTK4: Implement dw_pointer_query_pos(). Fix a macro typo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2277
diff changeset
3222 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
3223 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
3224 double dx, dy;
18028fa53ef2 GTK4: Implement dw_pointer_query_pos(). Fix a macro typo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2277
diff changeset
3225
18028fa53ef2 GTK4: Implement dw_pointer_query_pos(). Fix a macro typo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2277
diff changeset
3226 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
3227
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3228 if(x)
2278
18028fa53ef2 GTK4: Implement dw_pointer_query_pos(). Fix a macro typo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2277
diff changeset
3229 *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
3230 if(y)
2278
18028fa53ef2 GTK4: Implement dw_pointer_query_pos(). Fix a macro typo.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2277
diff changeset
3231 *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
3232 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
3233 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3234
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3235 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3236 * 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
3237 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3238 * 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
3239 * 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
3240 */
2322
ebcaedfa7ff4 GTK4: Implement dw_pointer_set_pos() with Xlib. Also translate coordinate
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2321
diff changeset
3241 #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
3242 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
3243 {
2322
ebcaedfa7ff4 GTK4: Implement dw_pointer_set_pos() with Xlib. Also translate coordinate
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2321
diff changeset
3244 }
ebcaedfa7ff4 GTK4: Implement dw_pointer_set_pos() with Xlib. Also translate coordinate
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2321
diff changeset
3245 #else
ebcaedfa7ff4 GTK4: Implement dw_pointer_set_pos() with Xlib. Also translate coordinate
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2321
diff changeset
3246 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
3247 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
3248 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
3249 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
3250 {
ebcaedfa7ff4 GTK4: Implement dw_pointer_set_pos() with Xlib. Also translate coordinate
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2321
diff changeset
3251 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
3252
2324
610c66b17fbc GTK4: Put Xlib calls in GDK_IS_X11_DISPLAY() code checks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2323
diff changeset
3253 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
3254 {
ebcaedfa7ff4 GTK4: Implement dw_pointer_set_pos() with Xlib. Also translate coordinate
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2321
diff changeset
3255 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
3256 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
3257
ebcaedfa7ff4 GTK4: Implement dw_pointer_set_pos() with Xlib. Also translate coordinate
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2321
diff changeset
3258 if(xdisplay)
ebcaedfa7ff4 GTK4: Implement dw_pointer_set_pos() with Xlib. Also translate coordinate
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2321
diff changeset
3259 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
3260 }
ebcaedfa7ff4 GTK4: Implement dw_pointer_set_pos() with Xlib. Also translate coordinate
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2321
diff changeset
3261 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
3262 }
ebcaedfa7ff4 GTK4: Implement dw_pointer_set_pos() with Xlib. Also translate coordinate
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2321
diff changeset
3263 #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
3264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3265 #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
3266 #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
3267 #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
3268
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
3269 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
3270 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3271 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
3272
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
3273 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
3274 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
3275 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
3276
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3277 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
3278 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
3279 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
3280 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3281
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
3282 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
3283 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3284 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
3285 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
3286 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
3287 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
3288 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
3289 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3290
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3291 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3292 * 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
3293 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3294 * 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
3295 * 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
3296 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3297 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
3298 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
3299 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
3300 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
3301 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3302 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
3303
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3304 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
3305 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3306 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
3307 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
3308 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3309 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
3310 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3311
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3312 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3313 * 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
3314 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3315 * 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
3316 * 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
3317 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3318 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
3319 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
3320 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
3321 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
3322 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3323 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
3324 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
3325 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
3326 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
3327 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
3328
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3329 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
3330 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3331 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
3332 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
3333 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
3334 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
3335 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
3336
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3337 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
3338 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
3339 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
3340 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
3341 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
3342 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
3343
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3344 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
3345 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
3346 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
3347
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3348 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
3349 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
3350 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
3351
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3352 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
3353 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
3354 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3355 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
3356 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3357
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3358
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3359 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3360 * 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
3361 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3362 * 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
3363 * 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
3364 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3365 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
3366 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
3367 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
3368 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
3369 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3370 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
3371
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3372 /* 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
3373 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
3374 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
3375 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
3376 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
3377 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
3378 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
3379 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
3380 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3381
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3382 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3383 * 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
3384 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3385 * 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
3386 * 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
3387 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3388 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
3389 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
3390 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
3391 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
3392 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3393 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
3394 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
3395 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
3396 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
3397 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
3398
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3399 /* 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
3400 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
3401 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
3402 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
3403 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
3404 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
3405 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
3406 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
3407 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3408
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3409 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3410 * 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
3411 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3412 * 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
3413 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3414 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
3415 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
3416 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
3417 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
3418 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3419 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
3420 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
3421 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
3422 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
3423 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
3424 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
3425
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3426 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
3427 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
3428 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
3429 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
3430 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
3431 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
3432 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
3433 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3434
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3435 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3436 * 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
3437 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3438 * 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
3439 * 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
3440 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3441 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
3442 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
3443 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
3444 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
3445 {
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
3446 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
3447 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
3448
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3449 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
3450 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
3451
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3452 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
3453 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
3454 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
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
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3457 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3458 * 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
3459 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3460 * 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
3461 * 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
3462 */
2305
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_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
3464 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
3465 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
3466 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
3467 {
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
3468 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
3469 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
3470
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3471 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
3472
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3473 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
3474 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
3475
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3476 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
3477 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
3478 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
3479 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3480
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3481 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3482 * 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
3483 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3484 * 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
3485 * 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
3486 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3487 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
3488 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
3489 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
3490 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
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 GtkWidget *tmp;
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
3493 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
3494 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
3495 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
3496 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
3497 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
3498 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
3499 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
3500 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
3501 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
3502 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
3503 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
3504 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
3505 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
3506 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3507
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3508 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3509 * 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
3510 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3511 * 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
3512 * 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
3513 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3514 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
3515 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
3516 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
3517 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
3518 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3519 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
3520 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
3521 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
3522 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
3523 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
3524 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
3525 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3526
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3527 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3528 * 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
3529 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3530 * 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
3531 * 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
3532 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3533 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
3534 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
3535 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
3536 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
3537 {
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 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
3539 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
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 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
3542 {
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3543 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
3544 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
3545 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
3546 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3547 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
3548 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
3549 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
3550 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
3551 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
3552 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3553
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 * 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
3556 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3557 * 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
3558 * 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
3559 * 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
3560 * 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
3561 * 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
3562 * (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
3563 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3564 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
3565 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
3566 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
3567 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
3568 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3569 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
3570 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
3571
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3572 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
3573 {
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
3574 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
3575 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
3576 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
3577 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3578 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
3579 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
3580 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
3581 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
3582 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
3583 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3584
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3585 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3586 * 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
3587 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3588 * 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
3589 * 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
3590 * 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
3591 * (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
3592 * 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
3593 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3594 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
3595 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
3596 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
3597 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
3598 {
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 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
3600 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
3601
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3602 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
3603 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3604 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
3605 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
3606 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
3607 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3608 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
3609 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
3610 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
3611 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
3612 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
3613 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3614
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3615 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3616 * 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
3617 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3618 * 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
3619 * 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
3620 */
2305
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 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
3622 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
3623 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
3624 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
3625 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3626 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
3627 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
3628
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 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
3630 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
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 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
3633 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
3634 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
3635 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
3636 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
3637 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
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
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3640 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3641 * 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
3642 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3643 * 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
3644 * 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
3645 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3646 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
3647 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
3648 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
3649 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
3650 {
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
3651 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
3652 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
3653 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
3654
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3655 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
3656 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
3657 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
3658 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3659
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3660 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3661 * 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
3662 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3663 * 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
3664 * 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
3665 * 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
3666 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3667 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
3668 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
3669 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
3670 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
3671
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3672 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3673 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
3674 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
3675
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3676 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
3677 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
3678 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
3679 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
3680 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
3681 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
3682 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
3683 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3684
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 * 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
3687 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3688 * 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
3689 * 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
3690 * 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
3691 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3692 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
3693 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
3694 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
3695 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
3696 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3697 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
3698 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
3699
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3700 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
3701 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
3702 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
3703 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
3704 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
3705 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
3706 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3707
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3708 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3709 * 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
3710 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3711 * 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
3712 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3713 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
3714 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
3715 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
3716 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
3717
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 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3719 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
3720 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
3721 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
3722 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
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 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3726 * 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
3727 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3728 * 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
3729 * 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
3730 */
2305
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_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
3732 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
3733 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
3734 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
3735 {
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 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
3737 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
3738 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
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 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
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 * 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
3748 * 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
3749 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3750 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
3751 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
3752 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
3753 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
3754 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3755 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
3756 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
3757 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
3758 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
3759 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
3760
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3761 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
3762 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3763 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
3764 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
3765 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
3766 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
3767
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3768 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
3769 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
3770 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
3771 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
3772
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3773 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
3774 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
3775 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
3776
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3777 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
3778 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
3779 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
3780 else
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3781 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
3782 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
3783 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
3784 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
3785 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
3786 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
3787 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3788
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3789 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3790 * 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
3791 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3792 * 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
3793 * 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
3794 */
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
3795 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
3796 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
3797 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
3798 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
3799 {
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
3800 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
3801 {
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
3802 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
3803
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
3804 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
3805 {
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
3806 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
3807 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
3808
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
3809 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
3810 {
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
3811 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
3812 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
3813
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
3814 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
3815 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
3816 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
3817 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
3818 }
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
3819 }
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
3820 }
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
3821 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
3822 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3823
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3824 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3825 * 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
3826 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3827 * 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
3828 * 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
3829 * (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
3830 * 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
3831 * 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
3832 * 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
3833 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3834 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
3835 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
3836 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
3837 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
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 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
3840
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3841 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
3842 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
3843 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3844 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3845 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
3846
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3847 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
3848
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3849 /* 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
3850 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
3851 {
2315
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
3852 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
3853
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3854 /* 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
3855 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
3856 {
2282
b045bb67922d GTK4: Implement resizing of images in the layout manager.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2281
diff changeset
3857 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
3858 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
3859 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
3860 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
3861 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
3862 }
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3863 }
2315
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
3864 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
3865 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
3866 }
b045bb67922d GTK4: Implement resizing of images in the layout manager.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2281
diff changeset
3867
b045bb67922d GTK4: Implement resizing of images in the layout manager.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2281
diff changeset
3868 if(tmp)
b045bb67922d GTK4: Implement resizing of images in the layout manager.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2281
diff changeset
3869 {
b045bb67922d GTK4: Implement resizing of images in the layout manager.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2281
diff changeset
3870 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
3871 {
b045bb67922d GTK4: Implement resizing of images in the layout manager.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2281
diff changeset
3872 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
3873 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
3874 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
3875 }
b3efaae95735 GTK4: Apparenlty on GTK4 GtkImage is used for icons, switch to GtkPicture.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2365
diff changeset
3876 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
3877 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
3878 }
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3879 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
3880 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3881
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3882 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3883 * 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
3884 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3885 * 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
3886 * 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
3887 * (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
3888 * 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
3889 * 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
3890 * 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
3891 * 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
3892 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3893 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
3894 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
3895 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
3896 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
3897 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3898 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
3899
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3900 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
3901 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3902 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3903 * 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
3904 * 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
3905 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3906 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
3907 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
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 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
3910 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3911 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
3912 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
3913 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3914 /* 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
3915 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
3916 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3917 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
3918 /* 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
3919 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
3920 }
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3921 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3922 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
3923 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
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(tmp)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3926 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3927 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
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 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
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 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
3932 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
3933 }
b3efaae95735 GTK4: Apparenlty on GTK4 GtkImage is used for icons, switch to GtkPicture.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2365
diff changeset
3934 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
3935 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
3936 }
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3937 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
3938 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3939
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3940 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3941 * 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
3942 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3943 * 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
3944 * 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
3945 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3946 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
3947 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
3948 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
3949 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
3950 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3951 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
3952 {
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
3953 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
3954 if(buffer)
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
3955 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
3956 }
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 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
3958 {
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
3959 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
3960 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
3961 if(buffer)
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
3962 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
3963 }
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 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
3965 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
3966 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
3967 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
3968 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
3969 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
3970 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
3971 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3972 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3973 * 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
3974 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3975 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
3976 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
3977 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
3978 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
3979 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
3980 }
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3981 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
3982 }
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 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3985 * 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
3986 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3987 * 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
3988 * 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
3989 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
3990 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
3991 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
3992 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
3993 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
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 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
3996 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
3997 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
3998 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
3999 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
4000 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4001
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4002 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4003 * 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
4004 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4005 * 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
4006 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4007 * 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
4008 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4009 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
4010 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
4011 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
4012 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
4013 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4014 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
4015 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
4016
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4017 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
4018 {
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
4019 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
4020 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
4021 }
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 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
4023 {
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
4024 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
4025 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
4026 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
4027 }
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4028 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
4029 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
4030 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
4031 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
4032 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4033
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 * 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
4036 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4037 * 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
4038 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4039 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
4040 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
4041 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
4042 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
4043 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4044 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
4045 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
4046 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4047
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4048 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4049 * 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
4050 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4051 * 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
4052 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4053 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
4054 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
4055 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
4056 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
4057 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4058 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
4059 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
4060 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4061
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4062 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4063 * 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
4064 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4065 * 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
4066 * 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
4067 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4068 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
4069 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
4070 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
4071 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
4072 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4073 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
4074
2275
51cb73faab6e GTK4: Implement dw_window_from_id().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2274
diff changeset
4075 if(handle && GTK_WIDGET(handle) && id)
51cb73faab6e GTK4: Implement dw_window_from_id().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2274
diff changeset
4076 {
51cb73faab6e GTK4: Implement dw_window_from_id().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2274
diff changeset
4077 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
4078
51cb73faab6e GTK4: Implement dw_window_from_id().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2274
diff changeset
4079 while(widget)
51cb73faab6e GTK4: Implement dw_window_from_id().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2274
diff changeset
4080 {
51cb73faab6e GTK4: Implement dw_window_from_id().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2274
diff changeset
4081 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
4082 {
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 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
4084 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
4085 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4086 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
4087 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
4088 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4089 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4090 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
4091 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4092
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4093 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4094 * 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
4095 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4096 * 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
4097 * 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
4098 * 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
4099 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4100 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
4101 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
4102 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
4103 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
4104 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4105 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
4106
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4107 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
4108 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4109 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
4110
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4111 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
4112 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4113 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
4114 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
4115
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4116 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
4117 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
4118 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
4119 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
4120 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
4121 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4122 }
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4123 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
4124 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4125
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4126 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4127 * 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
4128 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4129 * 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
4130 * 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
4131 * 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
4132 * 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
4133 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4134 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
4135 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
4136 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
4137 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
4138 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4139 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
4140
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4141 /* 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
4142 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
4143 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
4144 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
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 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
4147
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4148 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
4149 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4150 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
4151 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
4152
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4153 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
4154 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
4155 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
4156 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
4157 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
4158 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4159 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
4160 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
4161 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4162 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4163 }
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4164 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
4165 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4166
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4167 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4168 * 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
4169 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4170 * 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
4171 * 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
4172 * 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
4173 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4174 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
4175 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
4176 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
4177 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
4178 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4179 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
4180 *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
4181 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
4182 *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
4183
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4184 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
4185 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4186 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
4187
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4188 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
4189 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4190 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
4191
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4192 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
4193 *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
4194 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
4195 *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
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 }
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4198 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
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
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4201 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4202 * 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
4203 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4204 * 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
4205 * 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
4206 * 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
4207 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4208 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
4209 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
4210 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
4211 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
4212 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4213 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
4214 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4215 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
4216
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4217 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
4218 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4219 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
4220 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
4221
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4222 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
4223 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
4224 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
4225 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
4226 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4227 }
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4228 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
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
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 * 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
4233 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4234 * 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
4235 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4236 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
4237 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
4238 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
4239 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
4240 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4241 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
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(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
4244 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4245 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
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 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
4248 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4249 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
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 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
4252 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
4253 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4254 }
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4255 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
4256 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4257
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4258 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4259 * 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
4260 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4261 * 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
4262 * 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
4263 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4264 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
4265 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
4266 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
4267 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
4268 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4269 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
4270 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4271 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
4272
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4273 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
4274 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4275 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
4276 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
4277 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
4278
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4279 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
4280 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
4281 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
4282 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
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 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
4285 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
4286 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4287 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4288 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
4289 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
4290 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
4291 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4292 }
2304
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_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
4294 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4295
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 * 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
4298 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4299 * 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
4300 * 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
4301 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4302 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
4303 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
4304 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
4305 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
4306 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4307 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
4308 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4309 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
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 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
4312 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
4313 }
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4314 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
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
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4317 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4318 * 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
4319 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4320 * 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
4321 * 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
4322 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4323 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
4324 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
4325 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
4326 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
4327 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4328 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
4329 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4330 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
4331
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4332 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
4333 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
4334 }
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4335 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
4336 }
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 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4339 * 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
4340 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4341 * 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
4342 * 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
4343 */
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
4344 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
4345 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4346 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4347
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4348 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4349 * 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
4350 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4351 * 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
4352 * 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
4353 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4354 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
4355 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
4356 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
4357 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
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 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
4360 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4361 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
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 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
4364 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4365 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
4366 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
4367 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
4368
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4369 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
4370 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
4371 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
4372 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4373 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
4374 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
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 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4377 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
4378 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
4379 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
4380 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
4381 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4382 }
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4383 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
4384 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4385
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4386 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4387 * 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
4388 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4389 * 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
4390 * 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
4391 * 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
4392 * 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
4393 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4394 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
4395 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
4396 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
4397 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
4398 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4399 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
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 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
4402 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4403 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
4404
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4405 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
4406 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4407 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
4408 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
4409
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4410 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
4411 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
4412 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
4413 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
4414 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4415 }
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4416 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
4417 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4418
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4419 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4420 * 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
4421 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4422 * 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
4423 */
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
4424 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
4425 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4426 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4427
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4428 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4429 * 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
4430 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4431 * 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
4432 */
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
4433 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
4434 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4435 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4436
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4437 /* 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
4438 * 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
4439 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4440 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
4441 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4442 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
4443 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4444 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
4445 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
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 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
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
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4450 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4451 * 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
4452 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4453 * 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
4454 * 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
4455 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4456 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
4457 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
4458 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
4459 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
4460 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4461 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
4462 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4463 /* 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
4464 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
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 /* 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
4467 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
4468 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
4469 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
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 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4472 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4473 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4474 /* 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
4475 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
4476 /* 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
4477 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
4478 }
2304
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_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
4480 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4481
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 * 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
4484 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4485 * 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
4486 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4487 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
4488 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
4489 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
4490 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
4491 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4492 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
4493 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
4494
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4495 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
4496 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4497 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
4498 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
4499 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4500 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
4501 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
4502
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4503 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
4504 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
4505 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
4506 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
4507 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4508 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4509 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
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 * 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
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 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
4516 * 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
4517 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4518 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
4519 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
4520 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
4521 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
4522 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4523 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
4524
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4525 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
4526 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4527 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
4528 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
4529 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4530 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
4531
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4532 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
4533 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
4534 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
4535 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
4536 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4537 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4538 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
4539 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4540
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4541 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4542 * 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
4543 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4544 * 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
4545 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4546 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
4547 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
4548 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
4549 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
4550 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4551 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
4552 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
4553
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4554 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
4555 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4556 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
4557 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
4558 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
4559 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4560 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
4561 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4562
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4563 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4564 * 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
4565 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4566 * 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
4567 * 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
4568 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4569 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
4570 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
4571 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
4572 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
4573
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4574 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4575 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
4576
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4577 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
4578 {
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((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
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 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
4582 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
4583 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
4584 }
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 }
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 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
4587 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4588
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4589 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4590 * 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
4591 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4592 * 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
4593 * 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
4594 * 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
4595 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4596 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
4597 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
4598 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
4599 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
4600 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4601 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
4602
2305
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 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
4604 {
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 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
4606 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4607 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
4608 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
4609 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
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 }
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 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
4613 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4614
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4615 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4616 * 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
4617 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4618 * 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
4619 * 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
4620 */
2305
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 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
4622 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
4623 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
4624 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
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 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
4627 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
4628 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4629
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4630 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4631 * 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
4632 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4633 * 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
4634 * 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
4635 * 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
4636 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4637 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
4638 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
4639 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
4640 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
4641 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4642 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
4643 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
4644
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4645 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
4646 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
4647 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
4648 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4649 * 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
4650 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4651 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
4652 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
4653 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
4654 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4655
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4656 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4657 * 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
4658 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4659 * 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
4660 * 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
4661 */
2305
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 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
4663 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
4664 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
4665 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
4666 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4667 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
4668 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
4669 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4670
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 * 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
4673 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4674 * 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
4675 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4676 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
4677 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
4678 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
4679 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
4680 {
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 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
4682 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
4683 }
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 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4686 * 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
4687 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4688 * 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
4689 */
2305
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 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
4691 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
4692 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
4693 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
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 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
4696
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4697 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
4698 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4699 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
4700 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
4701 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
4702 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4703 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
4704 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4705
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4706 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4707 * 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
4708 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4709 * 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
4710 * 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
4711 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4712 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
4713 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
4714 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
4715 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
4716 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4717 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
4718 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
4719 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
4720 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
4721 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
4722 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
4723 }
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_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
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
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4727 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4728 * 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
4729 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4730 * 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
4731 * 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
4732 * 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
4733 * 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
4734 * 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
4735 * 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
4736 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4737 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
4738 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
4739 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
4740 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
4741 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4742 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
4743 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
4744 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
4745 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
4746 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
4747
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4748 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
4749 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4750 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
4751 && 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
4752 (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
4753 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4754 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
4755
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4756 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
4757
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4758 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
4759 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
4760 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
4761 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4762 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4763 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
4764 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4765
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4766 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4767 * 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
4768 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4769 * 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
4770 * 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
4771 * 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
4772 * 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
4773 * 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
4774 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4775 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
4776 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
4777 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
4778 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
4779 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4780 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
4781 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
4782 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
4783 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
4784 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
4785
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4786 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
4787 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4788 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
4789 && 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
4790 (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
4791 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4792 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
4793
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4794 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
4795
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4796 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
4797 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
4798 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
4799 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4800 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4801 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
4802 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4803
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4804 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4805 * 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
4806 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4807 * 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
4808 * 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
4809 * 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
4810 * 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
4811 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4812 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
4813 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
4814 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
4815 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
4816 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4817 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
4818 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
4819 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
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 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
4822 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4823 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
4824 && 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
4825 (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
4826 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4827 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
4828
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4829 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
4830 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4831 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4832 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
4833 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4834
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4835 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4836 * 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
4837 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4838 * 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
4839 * 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
4840 * 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
4841 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4842 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
4843 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
4844 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
4845 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
4846 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4847 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
4848 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
4849
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4850 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
4851 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4852 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
4853 && 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
4854 (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
4855 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
4856 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4857 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
4858 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4859
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4860 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4861 * 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
4862 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4863 * 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
4864 * 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
4865 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4866 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
4867 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
4868 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
4869 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
4870 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4871 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
4872 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
4873 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
4874
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4875 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
4876 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4877 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
4878
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4879 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
4880 (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
4881 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
4882 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
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 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
4885 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
4886 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
4887 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4888 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4889 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
4890 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4891
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4892 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4893 * 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
4894 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4895 * 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
4896 * 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
4897 */
2304
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_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
4899 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
4900 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
4901 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
4902 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4903 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
4904 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
4905 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
4906
2304
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(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
4908 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4909 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
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 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
4912 (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
4913 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4914 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
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 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
4917 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
4918 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4919 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4920 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
4921 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4922
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4923 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4924 * 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
4925 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4926 * 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
4927 * 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
4928 */
2304
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_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
4930 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
4931 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
4932 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
4933 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4934 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
4935 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
4936 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
4937
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4938 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
4939 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4940 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
4941 && 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
4942 (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
4943 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
4944 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4945 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
4946 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4947
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4948 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4949 * 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
4950 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4951 * 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
4952 * 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
4953 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4954 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
4955 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
4956 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
4957 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
4958 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4959 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
4960 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
4961
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4962 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
4963 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4964 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
4965 && 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
4966 (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
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 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
4969 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
4970
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4971 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
4972 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
4973 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
4974 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4975 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
4976 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
4977 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4978
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4979 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
4980 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4981 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
4982 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
4983
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4984 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
4985 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
4986 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
4987 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
4988
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4989 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
4990 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4991 do {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4992 _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
4993 } 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
4994 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4995 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4996
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4997 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
4998 * 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
4999 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5000 * 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
5001 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5002 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
5003 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
5004 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
5005 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
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 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
5008 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
5009
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5010 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
5011 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5012 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
5013 && 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
5014 (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
5015 {
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5016 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
5017
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5018 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
5019 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5020 do {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5021 _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
5022 } 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
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 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
5025 }
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5026 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5027 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
5028 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5029
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 * 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
5032 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5033 * 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
5034 * 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
5035 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5036 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
5037 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
5038 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
5039 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
5040 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5041 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
5042 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
5043
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5044 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
5045 {
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((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
5047 && 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
5048 (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
5049 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5050 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
5051 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
5052 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
5053 }
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 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
5056 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5057
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5058 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5059 * 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
5060 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5061 * 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
5062 * 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
5063 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5064 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
5065 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
5066 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
5067 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
5068 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5069 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
5070 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
5071
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5072 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
5073 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5074 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
5075 && 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
5076 (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
5077 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5078 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
5079 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
5080 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
5081 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5082 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5083 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
5084 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5085
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5086 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5087 * 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
5088 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5089 * 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
5090 * 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
5091 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5092 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
5093 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
5094 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
5095 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
5096 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5097 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
5098 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
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 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
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((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
5103 && 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
5104 (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
5105 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5106 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
5107 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
5108 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5109 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5110 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
5111 }
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 #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
5114
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5115 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
5116 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5117 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
5118 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
5119 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
5120 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
5121 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
5122 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
5123 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
5124 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
5125
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5126 /* 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
5127 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
5128 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
5129
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5130 /* 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
5131 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
5132 /* 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
5133 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
5134 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
5135 /* 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
5136 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
5137 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5138 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
5139 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5140 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
5141 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
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 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
5144 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5145 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
5146 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5147 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
5148 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5149 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
5150 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5151 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
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 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
5154 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5155 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
5156 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5157 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
5158 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5159 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
5160 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5161 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
5162 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5163 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5164 /* 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
5165 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
5166 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
5167 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
5168 /* 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
5169 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
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 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
5172 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
5173 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
5174 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
5175 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
5176
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5177 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
5178 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5179 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
5180 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
5181 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
5182 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
5183 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
5184 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
5185 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5186 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
5187 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5188 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
5189 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
5190 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
5191 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5192 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
5193 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5194 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
5195 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
5196 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
5197 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
5198 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5199 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
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 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
5202 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
5203 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
5204 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
5205 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5206 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
5207 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5208 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
5209 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
5210 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
5211 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
5212 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5213 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
5214 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5215 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
5216 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
5217 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
5218 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
5219 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5220 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
5221 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
5222 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
5223 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
5224 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
5225 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5226 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
5227 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
5228 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
5229 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5230 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
5231 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5232 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
5233 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
5234 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
5235 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5236 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
5237 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5238 /* 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
5239 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
5240 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
5241 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
5242 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
5243 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
5244 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
5245 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5246 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
5247 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
5248 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
5249 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
5250 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
5251 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
5252 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5253
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 * 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
5256 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5257 * 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
5258 * 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
5259 * 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
5260 * 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
5261 * 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
5262 * (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
5263 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5264 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
5265 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
5266 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
5267 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
5268 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5269 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
5270 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
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
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5273 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5274 * 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
5275 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5276 * 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
5277 * 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
5278 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5279 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
5280 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5281 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
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 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
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
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5286 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5287 * 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
5288 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5289 * 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
5290 * 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
5291 * 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
5292 * 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
5293 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
5294 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
5295 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
5296 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
5297 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
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 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
5300 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
5301 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
5302 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
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 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
5305 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
5306
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5307 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
5308 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
5309
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
5310 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
5311
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5312 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
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 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
5315 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
5316 }
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
5317 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
5318 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
5319 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
5320 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
5321 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
5322 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5323
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5324 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5325 * 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
5326 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5327 * 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
5328 * 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
5329 * 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
5330 * 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
5331 */
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
5332 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
5333 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5334 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
5335 }
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 /* 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
5338 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
5339 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5340 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
5341 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5342 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
5343 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
5344
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5345 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
5346 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5347 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
5348 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
5349 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
5350 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5351 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5352 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
5353 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5354
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 * 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
5357 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5358 * 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
5359 * 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
5360 * (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
5361 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5362 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
5363 {
2315
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
5364 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
5365
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
5366 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
5367 {
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
5368 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
5369
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
5370 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
5371
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
5372 /* 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
5373 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
5374 {
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
5375 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
5376
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
5377 /* 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
5378 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
5379 {
2315
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
5380 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
5381 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
5382 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
5383 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
5384 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
5385 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5386 }
2315
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
5387 else
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
5388 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
5389 }
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
5390 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
5391 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5392
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5393 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5394 * 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
5395 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5396 * 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
5397 * 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
5398 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5399 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
5400 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5401 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
5402 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
5403 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
5404
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5405 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5406 * 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
5407 * 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
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 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
5410 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5411 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
5412 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
5413 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5414 /* 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
5415 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
5416 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
5417 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
5418 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
5419 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
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
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5422 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5423 * 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
5424 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5425 * 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
5426 */
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
5427 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
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 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
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 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
5432 {
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(handle);
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
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 * 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
5439 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5440 * 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
5441 * 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
5442 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5443 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
5444 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
5445 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
5446 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
5447 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5448 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
5449 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
5450 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
5451
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5452 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
5453
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5454 /* 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
5455 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
5456 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
5457
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5458 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
5459 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5460 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
5461
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5462 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
5463
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5464 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
5465 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5466 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
5467 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5468 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
5469 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
5470 }
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5471 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
5472 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5473
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5474 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5475 * 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
5476 * 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
5477 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5478 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
5479 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5480 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
5481 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
5482 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
5483 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
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 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
5486
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5487 /* 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
5488 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
5489 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
5490
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5491 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
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 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
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 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
5496 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
5497 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
5498 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5499 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
5500 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5501
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5502 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
5503 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5504 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
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 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
5507 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
5508 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
5509 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
5510
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5511 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
5512 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
5513 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5514 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
5515 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5516 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
5517 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
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 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
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 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
5522 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5523 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
5524 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
5525 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5526 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
5527 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5528 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
5529
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5530 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
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 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
5533 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5534 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
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 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
5537 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
5538
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5539 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
5540 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
5541 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
5542 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
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 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
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 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
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 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
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 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
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 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
5553 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
5554
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5555 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
5556 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
5557 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
5558 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
5559
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5560 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
5561 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5562 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
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 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5565 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5566 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5567
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 * 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
5570 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5571 * 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
5572 * 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
5573 * 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
5574 * 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
5575 * 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
5576 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5577 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
5578 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
5579 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
5580 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
5581 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5582 _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
5583 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
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 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5587 * 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
5588 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5589 * 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
5590 * 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
5591 * 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
5592 * 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
5593 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5594 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
5595 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
5596 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
5597 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
5598 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5599 _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
5600 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
5601 }
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 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5604 * 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
5605 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5606 * 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
5607 * 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
5608 * 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
5609 * 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
5610 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5611 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
5612 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5613 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
5614 }
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 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5617 * 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
5618 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5619 * 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
5620 * 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
5621 * 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
5622 * 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
5623 * 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
5624 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5625 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
5626 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5627 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
5628 }
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 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5631 * 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
5632 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5633 * 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
5634 * 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
5635 * 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
5636 * 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
5637 * 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
5638 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5639 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
5640 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
5641 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
5642 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
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 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
5645
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5646 _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
5647 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
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 * 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
5652 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5653 * 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
5654 * 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
5655 * 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
5656 * 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
5657 * 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
5658 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5659 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
5660 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
5661 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
5662 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
5663 {
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_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
5665 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
5666 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5667
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 * 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
5670 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5671 * 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
5672 * 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
5673 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5674 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
5675 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
5676 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
5677 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
5678 {
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5679 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
5680 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
5681
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5682 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
5683 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5684 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
5685
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5686 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
5687 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
5688
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5689 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
5690 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
5691 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
5692 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
5693 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
5694 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
5695 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
5696 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
5697 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
5698 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
5699 else
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5700 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
5701 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5702 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
5703 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5704
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5705 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5706 * 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
5707 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5708 * 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
5709 * 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
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 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
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 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
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
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5716 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5717 * 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
5718 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5719 * 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
5720 * 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
5721 * 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
5722 * 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
5723 * 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
5724 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5725 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
5726 {
2441
a80df2e7195d GTK4: Add a comment with the information about striped controls.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2410
diff changeset
5727 /* 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
5728 * 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
5729 * "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
5730 * 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
5731 */
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 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
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 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
5738 * 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
5739 * 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
5740 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5741 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
5742 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
5743 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
5744 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
5745 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5746 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
5747
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5748 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
5749
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5750 /* 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
5751 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
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 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
5754
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5755 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
5756 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5757 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
5758 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5759 }
2304
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_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
5761 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5762
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5763 /* 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
5764 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
5765 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5766 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
5767 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
5768
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5769 /* 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
5770 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
5771 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
5772
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5773 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
5774 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5775 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
5776
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5777 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
5778 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5779 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
5780 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5781
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5782 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
5783 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5784 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
5785 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5786 }
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 * 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
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 * 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
5793 * 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
5794 * 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
5795 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
5796 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
5797 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
5798 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
5799 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
5800 {
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5801 _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
5802 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
5803 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5804
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5805 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5806 * 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
5807 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5808 * 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
5809 * 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
5810 * 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
5811 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
5812 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
5813 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
5814 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
5815 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
5816 {
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5817 _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
5818 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
5819 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5820
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5821 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5822 * 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
5823 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5824 * 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
5825 * 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
5826 * 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
5827 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
5828 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
5829 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
5830 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
5831 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
5832 {
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5833 _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
5834 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
5835 }
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 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5838 * 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
5839 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5840 * 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
5841 * 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
5842 * 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
5843 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
5844 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
5845 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
5846 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
5847 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
5848 {
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
5849 _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
5850 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
5851 }
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 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5854 * 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
5855 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5856 * 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
5857 * 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
5858 * 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
5859 */
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
5860 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
5861 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5862 /* 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
5863 }
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 * 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
5867 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5868 * 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
5869 * 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
5870 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
5871 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
5872 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
5873 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
5874 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
5875 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5876 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
5877 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
5878
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5879 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
5880
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5881 /* 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
5882 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
5883 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
5884
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5885 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
5886 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5887 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
5888 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
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 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
5891
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5892 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
5893 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5894 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
5895 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
5896 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5897
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5898 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
5899 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
5900 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5901 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
5902
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5903 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
5904 }
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
5905 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
5906 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5907
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5908 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5909 * 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
5910 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5911 * 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
5912 * 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
5913 */
2305
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_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
5915 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
5916 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
5917 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
5918 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5919 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
5920 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
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 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
5923
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5924 /* 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
5925 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
5926 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
5927
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5928 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
5929 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5930 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
5931 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
5932
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5933 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
5934 }
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
5935 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
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 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5939 * 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
5940 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5941 * 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
5942 * 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
5943 * 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
5944 * 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
5945 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
5946 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
5947 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
5948 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
5949 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
5950 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5951 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
5952
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5953 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
5954
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5955 /* 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
5956 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
5957 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5958 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
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 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
5961 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5962 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
5963 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
5964 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
5965 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
5966 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
5967
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
5968 /* 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
5969 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
5970 {
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
5971 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
5972
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
5973 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
5974 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
5975 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
5976 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
5977 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
5978 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
5979 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
5980 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
5981 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
5982 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
5983 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
5984 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
5985 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
5986 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
5987 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
5988 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
5989 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
5990 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
5991 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
5992 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
5993 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
5994 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
5995 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
5996 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
5997 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
5998 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
5999 {
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 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
6001 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6002 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
6003 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
6004 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6005 }
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6006 }
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 }
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6009 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
6010 }
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 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6013 * 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
6014 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6015 * 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
6016 * 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
6017 * 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
6018 * 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
6019 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6020 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
6021 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
6022 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
6023 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
6024 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6025 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
6026 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
6027 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
6028 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
6029
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6030 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
6031
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6032 /* 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
6033 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
6034 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
6035
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6036 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
6037 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6038 /* 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
6039 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
6040 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6041 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
6042 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
6043 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
6044 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6045 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
6046
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6047 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
6048 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6049 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
6050
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6051 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
6052 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6053 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
6054
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6055 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
6056 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6057 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
6058 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
6059 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6060 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6061 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6062 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
6063 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
6064 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6065 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6066 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
6067 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6068 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
6069
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6070 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
6071 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
6072 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6073 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
6074
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6075 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
6076 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6077 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
6078 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6079 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
6080 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6081 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6082 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6083 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6084 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
6085
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6086 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
6087 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6088 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
6089 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
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 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6093 /* 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
6094 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
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 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
6097 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
6098 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
6099 }
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6100 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
6101 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6102
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6103 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6104 * 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
6105 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6106 * 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
6107 * 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
6108 * 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
6109 * 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
6110 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6111 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
6112 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
6113 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
6114 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
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 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
6117 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
6118 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
6119 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
6120
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6121 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
6122
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6123 /* 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
6124 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
6125 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
6126
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(store)
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 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
6130 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
6131
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6132 /* 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
6133 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
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 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
6136 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
6137
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6138 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
6139 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6140 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
6141
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6142 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
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 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
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 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
6147 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6148 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
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 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
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 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
6153 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
6154 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6155 }
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 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
6158 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
6159 }
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 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
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 /* 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
6164 * 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
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 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
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 else
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 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
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 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
6173 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6174 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
6175 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
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 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6178 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6179 /* 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
6180 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
6181 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6182 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
6183 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
6184 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
6185 }
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6186 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
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
2314
eda7642d80df GTK4: Code cleanup, add _dw prefix to internal functions and structures.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2313
diff changeset
6189 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
6190 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6191 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
6192 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
6193 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
6194
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6195 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
6196 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6197 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
6198 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6199 /* 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
6200 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
6201 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
6202 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6203 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
6204 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
6205 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6206 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
6207 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
6208 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6209 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6210 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
6211 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6212
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6213 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
6214 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6215 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
6216 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
6217
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6218 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
6219
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6220 /* 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
6221 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
6222 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
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 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
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 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
6227
2314
eda7642d80df GTK4: Code cleanup, add _dw prefix to internal functions and structures.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2313
diff changeset
6228 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
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 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
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 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
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 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
6235 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
6236 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6237 }
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 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6242 * 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
6243 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6244 * 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
6245 * 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
6246 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6247 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
6248 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
6249 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
6250 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
6251 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6252 _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
6253 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
6254 }
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 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6257 * 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
6258 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6259 * 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
6260 * 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
6261 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6262 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
6263 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
6264 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
6265 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
6266 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6267 _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
6268 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
6269 }
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
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6271 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
6272 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6273 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
6274 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
6275
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6276 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
6277
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6278 /* 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
6279 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
6280 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
6281
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6282 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
6283 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6284 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
6285 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
6286
2314
eda7642d80df GTK4: Code cleanup, add _dw prefix to internal functions and structures.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2313
diff changeset
6287 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
6288 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6289 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
6290 rows--;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6291 }
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 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
6294 }
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
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6297 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6298 * 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
6299 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6300 * 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
6301 * 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
6302 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6303 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
6304 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
6305 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
6306 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
6307 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6308 _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
6309 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
6310 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6311
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6312 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6313 * 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
6314 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6315 * 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
6316 * 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
6317 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6318 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
6319 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
6320 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
6321 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
6322 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6323 _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
6324 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
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
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6327 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6328 * 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
6329 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6330 * 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
6331 */
2305
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_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
6333 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
6334 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
6335 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
6336 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6337 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
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 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
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 /* 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
6342 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
6343 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
6344 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
6345 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6346
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6347 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6348 * 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
6349 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6350 * 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
6351 * 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
6352 * 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
6353 */
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
6354 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
6355 {
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
6356 /* 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
6357 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6358
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 * 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
6361 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6362 * 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
6363 * 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
6364 */
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
6365 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
6366 {
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
6367 /* 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
6368 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6369
2341
1a630cddf384 GTK4: Remove render widgets from the dirty list when they are destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2340
diff changeset
6370 /* 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
6371 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
6372 {
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
6373 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
6374
4367da529f5a GTK4: Fix direct drawing onto render widgets. Can't cache the cairo_t.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2356
diff changeset
6375 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
6376 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
6377
2341
1a630cddf384 GTK4: Remove render widgets from the dirty list when they are destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2340
diff changeset
6378 _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
6379 }
1a630cddf384 GTK4: Remove render widgets from the dirty list when they are destroyed.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2340
diff changeset
6380
2264
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 * 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
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 * 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
6385 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6386 * 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
6387 */
2305
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_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
6389 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
6390 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
6391 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
6392 {
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 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
6394 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
6395 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
6396 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
6397 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
6398 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
6399 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
6400 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
6401 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6402
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
6403 /*
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
6404 * 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
6405 * 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
6406 * 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
6407 */
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
6408 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
6409 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
6410 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
6411 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
6412 {
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
6413 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
6414 gtk_widget_queue_draw(handle);
2356
6f4f7882363c GTK4: Fix compilation after last commit.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2355
diff changeset
6415 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
6416 }
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
6417
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6418 /* 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
6419 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
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 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
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 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
6424 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
6425 }
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 (value < 16)
2626
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
6427 return _dw_colors[value];
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
6428 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
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 /* 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
6432 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6433 * 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
6434 * 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
6435 * 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
6436 */
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
6437 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
6438 {
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6439 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
6440 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
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 *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
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
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6445 /* 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
6446 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6447 * 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
6448 * 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
6449 * 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
6450 */
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
6451 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
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 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
6454
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6455 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
6456 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6457 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
6458 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6459 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
6460 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
6461 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6462 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6463 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6464 {
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6465 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
6466
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6467 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
6468 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6469 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
6470 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
6471 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6472 *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
6473 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6474 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6475
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6476 /* 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
6477 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6478 * 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
6479 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6480 * 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
6481 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6482 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
6483 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
6484 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
6485 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
6486 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6487 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
6488 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
6489 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
6490 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
6491
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6492 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
6493 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
6494 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
6495
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6496 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
6497 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
6498
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
6499 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
6500 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6501 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
6502 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
6503 }
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
6504 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
6505 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
6506 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
6507 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6508
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6509 /* 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
6510 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6511 * 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
6512 * 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
6513 * 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
6514 * 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
6515 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6516 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
6517 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
6518 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
6519 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
6520 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6521 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
6522 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
6523
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6524 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
6525 {
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
6526 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
6527
2337
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
6528 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
6529 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
6530 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
6531 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
6532 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6533 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
6534 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
6535 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
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 *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
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 gdk_cairo_set_source_rgba(cr, foreground);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6540 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
6541 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
6542 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
6543 /* 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
6544 * 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
6545 */
2337
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
6546 if(!cached)
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
6547 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
6548 }
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6549 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
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
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6552 /* 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
6553 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6554 * 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
6555 * 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
6556 * 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
6557 * 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
6558 * 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
6559 * 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
6560 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6561 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
6562 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
6563 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
6564 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
6565 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6566 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
6567 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
6568
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6569 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
6570 {
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
6571 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
6572
2337
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
6573 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
6574 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
6575 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
6576 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
6577 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6578 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
6579 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
6580 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
6581 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6582 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
6583
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6584 gdk_cairo_set_source_rgba(cr, foreground);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6585 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
6586 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
6587 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
6588 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
6589 /* 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
6590 * 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
6591 */
2337
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
6592 if(!cached)
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
6593 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
6594 }
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6595 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
6596 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6597
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6598 /* 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
6599 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6600 * 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
6601 * 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
6602 * 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
6603 * 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
6604 * 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
6605 * 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
6606 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6607 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
6608 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
6609 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
6610 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
6611 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6612 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
6613 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
6614 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
6615
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6616 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
6617 {
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
6618 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
6619
2337
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
6620 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
6621 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
6622 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
6623 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
6624 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6625 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
6626 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
6627 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
6628 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6629 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
6630
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6631 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
6632 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
6633
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6634 gdk_cairo_set_source_rgba(cr, foreground);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6635 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
6636 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
6637 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
6638 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6639 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
6640 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6641 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
6642 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
6643 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
6644 /* 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
6645 * 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
6646 */
2337
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
6647 if(!cached)
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
6648 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
6649 }
2304
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_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
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
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6653 /* 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
6654 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6655 * 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
6656 * 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
6657 * 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
6658 * 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
6659 * 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
6660 * 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
6661 * 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
6662 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6663 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
6664 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
6665 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
6666 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
6667 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6668 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
6669 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
6670
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6671 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
6672 {
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
6673 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
6674
2337
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
6675 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
6676 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
6677 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
6678 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
6679 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6680 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
6681 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
6682 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
6683 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6684 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
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 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
6687 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
6688
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6689 gdk_cairo_set_source_rgba(cr, foreground);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6690 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
6691 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
6692 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
6693 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
6694 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
6695 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
6696 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
6697 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
6698 /* 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
6699 * 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
6700 */
2337
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
6701 if(!cached)
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
6702 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
6703 }
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6704 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
6705 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6706
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6707 /* 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
6708 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6709 * 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
6710 * 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
6711 * 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
6712 * 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
6713 * 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
6714 * 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
6715 * 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
6716 * 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
6717 * 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
6718 * 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
6719 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6720 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
6721 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
6722 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
6723 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
6724 {
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_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
6726 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
6727
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6728 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
6729 {
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
6730 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
6731
2337
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
6732 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
6733 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
6734 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
6735 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
6736 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6737 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
6738 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
6739 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
6740 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6741 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
6742 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
6743 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
6744
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6745 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
6746 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
6747
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6748 gdk_cairo_set_source_rgba(cr, foreground);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6749 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
6750 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
6751 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
6752 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
6753 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
6754 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6755 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6756 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
6757 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
6758 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
6759 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
6760 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
6761
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6762 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
6763 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6764 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
6765 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
6766 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
6767 /* 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
6768 * 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
6769 */
2337
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
6770 if(!cached)
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
6771 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
6772 }
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6773 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
6774 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6775
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6776 /* 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
6777 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6778 * 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
6779 * 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
6780 * 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
6781 * 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
6782 * 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
6783 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6784 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
6785 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
6786 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
6787 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
6788 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6789 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
6790 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6791 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
6792 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
6793 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
6794 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
6795
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6796 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
6797 {
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
6798 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
6799
2337
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
6800 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
6801 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
6802 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
6803 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
6804 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
6805 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
6806 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6807 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
6808 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6809 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
6810 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
6811 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
6812 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
6813 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
6814 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6815 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
6816 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6817 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
6818 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
6819 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6820 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
6821
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6822 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
6823 {
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6824 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
6825
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6826 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
6827 {
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6828 GdkRGBA *foreground = pthread_getspecific(_dw_fg_color_key);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6829 GdkRGBA *background = pthread_getspecific(_dw_bg_color_key);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6830
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6831 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
6832 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
6833
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6834 gdk_cairo_set_source_rgba(cr, foreground);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6835 /* Create a background color attribute if required */
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6836 if(background)
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6837 {
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6838 PangoAttrList *list = pango_layout_get_attributes(layout);
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6839 PangoAttribute *attr = pango_attr_background_new((guint16)(background->red * 65535),
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6840 (guint16)(background->green * 65535),
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6841 (guint16)(background->blue* 65535));
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6842 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
6843 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6844 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
6845 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6846 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
6847 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
6848 }
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6849 /* 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
6850 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
6851 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
6852
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6853 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
6854 }
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6855 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
6856 }
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6857 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
6858 }
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6859 /* 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
6860 * 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
6861 */
2337
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
6862 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
6863 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
6864 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6865 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
6866 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
6867 }
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 /* 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
6870 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6871 * 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
6872 * 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
6873 * 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
6874 * 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
6875 * 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
6876 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6877 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
6878 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
6879 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
6880 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
6881 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6882 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
6883 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
6884 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
6885
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6886 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
6887 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6888 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
6889 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6890 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
6891 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
6892 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6893 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
6894 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
6895 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6896 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6897 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
6898 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6899 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
6900 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
6901 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
6902 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
6903 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6904
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6905 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
6906 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
6907 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6908 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
6909
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6910 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
6911 {
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6912 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
6913
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6914 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
6915 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6916 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
6917
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6918 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
6919 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
6920 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
6921
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6922 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
6923 *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
6924 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
6925 *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
6926
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6927 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
6928 }
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6929 }
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6930 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
6931 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6932 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
6933 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
6934 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
6935 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
6936 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6937
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6938 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6939 * 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
6940 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6941 * 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
6942 * 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
6943 * 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
6944 * 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
6945 * 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
6946 * 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
6947 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6948 * 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
6949 */
2315
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
6950 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
6951 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
6952 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
6953 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
6954 {
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
6955 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
6956
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
6957 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
6958 {
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
6959 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
6960 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
6961 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
6962 /* 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
6963 * 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
6964 */
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
6965 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
6966 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
6967 }
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
6968 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
6969 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6970
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6971 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6972 * 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
6973 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6974 * 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
6975 * 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
6976 * 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
6977 * (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
6978 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
6979 * 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
6980 */
2315
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
6981 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
6982 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
6983 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
6984 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
6985 {
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
6986 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
6987
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
6988 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
6989 {
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
6990 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
6991
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
6992 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
6993
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
6994 /* 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
6995 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
6996 {
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
6997 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
6998
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
6999 /* 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
7000 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
7001 {
2315
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7002 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
7003 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
7004 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
7005 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
7006 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
7007 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7008 }
2315
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7009 else
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7010 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
7011
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7012 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
7013 {
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7014 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
7015 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
7016 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
7017 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
7018 }
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7019 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
7020 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7021 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
7022 pixmap = 0;
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7023 }
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7024 }
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7025 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
7026 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7027
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7028 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7029 * 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
7030 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7031 * 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
7032 * 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
7033 * 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
7034 * (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
7035 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7036 * 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
7037 */
2315
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7038 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
7039 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
7040 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
7041 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
7042 {
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7043 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
7044
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7045 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
7046 {
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7047 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
7048 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
7049
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 * 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
7052 * 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
7053 */
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7054 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
7055 {
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7056 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
7057 close(fd);
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7058 }
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7059 /* 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
7060 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
7061 {
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7062 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
7063 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
7064 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
7065 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
7066 /* 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
7067 unlink(template);
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7068 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
7069 }
2316
1f85311baa65 GTK4: dw_pixmap_new_from_data() should return NULL on failure.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2315
diff changeset
7070 else
1f85311baa65 GTK4: dw_pixmap_new_from_data() should return NULL on failure.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2315
diff changeset
7071 {
1f85311baa65 GTK4: dw_pixmap_new_from_data() should return NULL on failure.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2315
diff changeset
7072 free(pixmap);
1f85311baa65 GTK4: dw_pixmap_new_from_data() should return NULL on failure.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2315
diff changeset
7073 pixmap = 0;
1f85311baa65 GTK4: dw_pixmap_new_from_data() should return NULL on failure.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2315
diff changeset
7074 }
2315
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7075 }
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7076 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
7077 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7078
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7079 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7080 * 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
7081 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7082 * 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
7083 * 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
7084 * 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
7085 * 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
7086 * 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
7087 */
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
7088 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
7089 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7090 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7091
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7092 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7093 * 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
7094 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7095 * 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
7096 * 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
7097 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7098 * 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
7099 */
2315
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7100 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
7101 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
7102 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
7103 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
7104 {
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7105 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
7106
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7107 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
7108 {
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7109 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
7110 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
7111 }
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7112 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
7113 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7114
2337
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
7115 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
7116 {
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
7117 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
7118 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
7119 }
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
7120
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7121 /* 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
7122 * 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
7123 */
2337
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
7124 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
7125 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
7126 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
7127 {
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
7128 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
7129 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
7130 _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
7131 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
7132 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7133
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7134 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7135 * 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
7136 * 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
7137 * 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
7138 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7139 * 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
7140 * 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
7141 * 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
7142 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7143 * 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
7144 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7145 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
7146 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7147 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
7148 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7149 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
7150
2315
112595f9a645 GTK4: Remove unnecessary cruft and move pixmap functions into thread safety.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2314
diff changeset
7151 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
7152
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7153 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
7154 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
7155 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
7156 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7157 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
7158 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7159
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7160 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7161 * 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
7162 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7163 * 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
7164 * 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
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 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
7167 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
7168 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
7169 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
7170 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7171 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
7172 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
7173 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
7174 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
7175 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
7176 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
7177 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7178
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7179 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7180 * 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
7181 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7182 * 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
7183 * 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
7184 * 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
7185 * 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
7186 * 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
7187 * 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
7188 * 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
7189 * 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
7190 * 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
7191 * 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
7192 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7193 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
7194 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7195 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
7196 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7197
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7198 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7199 * 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
7200 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7201 * 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
7202 * 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
7203 * 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
7204 * 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
7205 * 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
7206 * 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
7207 * 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
7208 * 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
7209 * 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
7210 * 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
7211 * 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
7212 * 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
7213 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7214 * 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
7215 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
7216 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
7217 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
7218 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
7219 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
7220
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7221 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7222 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
7223 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
7224 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
7225
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7226 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
7227 {
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
7228 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
7229
2337
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
7230 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
7231 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
7232 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
7233 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
7234 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7235 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
7236 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
7237
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7238 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
7239 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7240 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
7241
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7242 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
7243 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7244 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
7245 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
7246 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
7247 }
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(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
7250 {
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
7251 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
7252 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
7253 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
7254 }
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7255 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
7256 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
7257
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7258 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
7259 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
7260 /* 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
7261 * 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
7262 */
2337
ef078d219bfc GTK4: Add a shadow surface to GtkDrawingArea widgets, which all the drawing
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2336
diff changeset
7263 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
7264 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
7265 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
7266 }
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
7267 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
7268 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7269
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7270 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7271 * 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
7272 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7273 * 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
7274 * 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
7275 */
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
7276 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
7277 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7278 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
7279 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7280
2314
eda7642d80df GTK4: Code cleanup, add _dw prefix to internal functions and structures.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2313
diff changeset
7281 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
7282 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7283 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
7284
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7285 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
7286 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7287 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
7288 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
7289 }
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
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7292 /* 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
7293 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7294 * 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
7295 * 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
7296 * 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
7297 */
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
7298 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
7299 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7300 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
7301 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
7302 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
7303
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7304
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7305 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
7306 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
7307
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7308 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
7309 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
7310
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7311 /* 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
7312 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
7313
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7314 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
7315 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
7316
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7317 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
7318 _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
7319
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7320 *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
7321 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
7322 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7323 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
7324 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
7325 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
7326 *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
7327 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7328
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7329 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
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 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
7332 }
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 /* 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
7335 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7336 * 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
7337 * 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
7338 * 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
7339 * 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
7340 */
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
7341 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
7342 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7343 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
7344 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
7345
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7346 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
7347 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
7348
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7349 *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
7350 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
7351 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7352
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7353 /* 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
7354 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7355 * 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
7356 */
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
7357 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
7358 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7359 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
7360 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
7361 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
7362 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7363
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 * 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
7366 */
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
7367 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
7368 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7369 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
7370
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7371 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
7372 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
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
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 * 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
7377 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7378 * 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
7379 */
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
7380 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
7381 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7382 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
7383 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7384 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
7385 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
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
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7389 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7390 * 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
7391 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7392 * 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
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 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
7395 {
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
7396 /* 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
7397 * 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
7398 * 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
7399 * 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
7400 */
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
7401 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
7402 {
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
7403 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
7404 {
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
7405 /* 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
7406 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
7407 {
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
7408 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
7409 {
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
7410 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
7411 }
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
7412 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
7413 }
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
7414 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
7415 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
7416 }
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
7417 }
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
7418 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
7419 {
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
7420 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
7421 }
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7422 }
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 * 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
7426 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7427 * 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
7428 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7429 * 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
7430 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7431 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
7432 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7433 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
7434 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
7435 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
7436 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7437
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 * 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
7440 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7441 * 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
7442 */
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
7443 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
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 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
7446 }
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 * 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
7450 */
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
7451 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
7452 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7453 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
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(!eve)
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 NULL;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7457
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7458 /* 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
7459 * 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
7460 * 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
7461 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7462 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
7463 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
7464 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
7465
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7466 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
7467 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
7468 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
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 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
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
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7473 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7474 * 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
7475 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7476 * 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
7477 */
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
7478 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
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 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
7481 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
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 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
7484 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
7485 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
7486 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
7487 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
7488 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
7489 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7490
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7491 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7492 * 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
7493 * 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
7494 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7495 * 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
7496 */
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
7497 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
7498 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7499 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
7500 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
7501
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7502 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
7503 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
7504 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
7505 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
7506 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
7507 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7508
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7509 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7510 * 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
7511 * 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
7512 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7513 * 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
7514 */
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
7515 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
7516 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7517 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
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 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
7520 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
7521
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7522 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
7523
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7524 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
7525 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7526 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
7527 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
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
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7530 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
7531 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7532 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
7533 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
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 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
7536 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
7537 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
7538 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
7539 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7540 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7541 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
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 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
7544 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
7545 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
7546 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
7547 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
7548 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
7549 }
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 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7552 * 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
7553 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7554 * 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
7555 */
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
7556 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
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 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
7559 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
7560
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7561 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
7562 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
7563 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
7564 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
7565 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
7566 *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
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 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
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
2314
eda7642d80df GTK4: Code cleanup, add _dw prefix to internal functions and structures.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2313
diff changeset
7571 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
7572 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
7573 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
7574 };
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7575
2314
eda7642d80df GTK4: Code cleanup, add _dw prefix to internal functions and structures.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2313
diff changeset
7576 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
7577 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7578 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
7579 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
7580 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
7581 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
7582 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
7583 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
7584
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7585 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
7586 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
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 /* problems */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7589 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
7590 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7591 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
7592 return;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7593 }
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 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
7596 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
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 /* 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
7599 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
7600
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7601 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
7602 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7603 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
7604 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
7605 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
7606
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7607 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
7608
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7609 /* 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
7610 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
7611 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7612 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
7613 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
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 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
7616 }
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 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
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 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
7621 return;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7622 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7623
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7624 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
7625 {
2314
eda7642d80df GTK4: Code cleanup, add _dw prefix to internal functions and structures.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2313
diff changeset
7626 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
7627 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
7628
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7629 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
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 /* 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
7632 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
7633 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
7634
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7635 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
7636 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
7637
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7638 connectcount++;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7639
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7640 /* 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
7641 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
7642 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
7643 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7644 }
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 /* 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
7647 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
7648 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7649 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
7650 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7651 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
7652 {
2314
eda7642d80df GTK4: Code cleanup, add _dw prefix to internal functions and structures.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2313
diff changeset
7653 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
7654
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7655 /* 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
7656 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
7657 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
7658 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
7659 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7660 {
2314
eda7642d80df GTK4: Code cleanup, add _dw prefix to internal functions and structures.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2313
diff changeset
7661 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
7662 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
7663 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
7664 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7665 connectcount--;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7666
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7667 /* 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
7668 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
7669 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
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 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
7672 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7673 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
7674 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7675 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
7676 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7677 /* Reset */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7678 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
7679 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7680 break;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7681 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
7682 /* Post */
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 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
7685 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
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 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
7688
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7689 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
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 /* 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
7692 * 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
7693 * continue.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7694 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7695 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
7696 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
7697 }
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 break;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7700 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
7701 /* Wait */
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 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
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 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
7706
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7707 /* 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
7708 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
7709 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
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 break;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7712 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
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 /* 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
7715 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
7716 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7717 break;
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 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7721 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7722 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7723 }
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 /* 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
7726 /* 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
7727 * 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
7728 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7729 * 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
7730 * 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
7731 * 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
7732 */
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
7733 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
7734 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7735 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
7736 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
7737 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
7738
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7739 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
7740 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
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 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
7743 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
7744 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
7745 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
7746 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
7747 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
7748 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
7749
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7750 /* 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
7751 * 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
7752 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7753 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
7754
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7755 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
7756 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
7757 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
7758 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
7759
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7760 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
7761 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7762 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
7763 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
7764 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
7765 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
7766 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
7767 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
7768 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
7769 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
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
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7772 /* 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
7773 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
7774 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
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
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7777 /* 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
7778 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7779 * 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
7780 * 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
7781 * 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
7782 */
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
7783 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
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 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
7786 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
7787 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
7788 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
7789
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7790 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
7791 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
7792 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
7793 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
7794 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
7795 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
7796 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7797
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7798 /* 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
7799 * 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
7800 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7801 * 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
7802 * 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
7803 */
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
7804 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
7805 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7806 /* 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
7807 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
7808
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7809 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
7810 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
7811
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7812 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
7813 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
7814 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
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 /* 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
7818 * 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
7819 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7820 * 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
7821 * 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
7822 */
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
7823 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
7824 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7825
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7826 /* 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
7827 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
7828
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7829 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
7830 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
7831
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7832 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
7833 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
7834 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
7835 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7836
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7837 /* 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
7838 * 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
7839 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7840 * 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
7841 * 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
7842 * 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
7843 * 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
7844 */
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
7845 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
7846 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7847 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
7848 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
7849 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
7850 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
7851
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7852 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
7853 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
7854
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7855 /* 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
7856 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
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 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
7859 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
7860
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7861 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
7862 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7863
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7864 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
7865 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
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 /* 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
7868 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
7869 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
7870
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7871 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
7872 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
7873
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7874 /* 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
7875 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
7876 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
7877 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
7878
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7879 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
7880 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
7881 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
7882 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
7883
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7884 /* 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
7885 * 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
7886 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7887 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
7888 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
7889 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
7890 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7891
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7892 /* 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
7893 * 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
7894 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7895 * 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
7896 * 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
7897 */
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
7898 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
7899 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7900 /* 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
7901 * 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
7902 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7903 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
7904 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
7905 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7906
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 * 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
7909 * 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
7910 * 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
7911 * 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
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 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
7914 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7915 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
7916 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
7917
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7918 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
7919 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
7920 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
7921 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
7922 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7923
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 * 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
7926 * 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
7927 * 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
7928 * 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
7929 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7930 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
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 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
7933 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
7934
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7935 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
7936 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
7937 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
7938 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
7939 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
7940 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
7941 }
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 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7944 * 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
7945 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7946 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
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 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
7949 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
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 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
7952
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7953 /* 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
7954 _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
7955
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7956 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
7957 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
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 /* 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
7960 _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
7961 }
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 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7964 * 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
7965 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7966 * 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
7967 * 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
7968 * 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
7969 * 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
7970 */
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
7971 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
7972 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7973 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
7974 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
7975
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7976 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
7977 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
7978
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7979 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
7980 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7981 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
7982 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
7983 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7984
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7985 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
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 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
7988 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
7989 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
7990 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7991
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7992 /* 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
7993 *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
7994
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7995 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
7996 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
7997 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
7998 *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
7999 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
8000 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
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 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
8004 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
8005 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
8006
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8007 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
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
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 * 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
8012 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8013 * 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
8014 * 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
8015 * 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
8016 */
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
8017 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
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 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
8020 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
8021
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8022 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
8023 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
8024
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8025 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
8026 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8027 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
8028 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
8029 }
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 /* 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
8032 *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
8033
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8034 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
8035 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8036 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
8037 *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
8038 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
8039 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
8040 }
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 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
8043 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
8044 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
8045
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8046 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
8047 }
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 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8050 * 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
8051 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8052 * 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
8053 * 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
8054 */
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
8055 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
8056 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8057 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
8058 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
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 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
8061 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
8062 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8063 /* 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
8064 * 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
8065 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8066 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
8067 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
8068 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
8069 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8070 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
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 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8073 * 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
8074 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8075 * 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
8076 * 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
8077 * 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
8078 */
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
8079 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
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 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
8082 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
8083 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
8084
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8085 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
8086 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
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 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
8089 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
8090 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
8091 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
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
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8094 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8095 * 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
8096 */
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
8097 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
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 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
8100 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8101
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 * 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
8104 */
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
8105 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
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 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
8108 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8109
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8110 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8111 * 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
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 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
8114 {
2265
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
8115 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
8116 }
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 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8119 * 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
8120 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8121 * 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
8122 */
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
8123 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
8124 {
2265
63bb97e94cd3 GTK4: More work on conversion... the amount of changes is really ridiculous.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2264
diff changeset
8125 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
8126 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
8127 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8128
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8129 /* 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
8130 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
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 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
8133
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8134 *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
8135
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8136 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
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 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
8139 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8140 /* 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
8141 *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
8142 *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
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 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
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 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
8147 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
8148 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
8149 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
8150 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
8151 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
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 *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
8154
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8155 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
8156
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8157 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
8158 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
8159 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
8160 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
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 /* MLE */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8163 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
8164 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8165 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
8166 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
8167 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
8168 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
8169 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8170 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
8171
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8172 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
8173 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8174 *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
8175 *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
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 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8178 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8179 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
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 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
8182 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8183 *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
8184 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
8185 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8186 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8187 *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
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 *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
8191 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
8192 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
8193 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8194 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
8195 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8196 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
8197 *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
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 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8200 {
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8201 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
8202 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
8203
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8204 *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
8205 *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
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 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8208 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
8209 *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
8210 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
8211 *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
8212 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
8213 *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
8214 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
8215 *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
8216 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8217
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8218 /* 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
8219 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
8220 {
2366
b3efaae95735 GTK4: Apparenlty on GTK4 GtkImage is used for icons, switch to GtkPicture.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2365
diff changeset
8221 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
8222
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8223 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
8224 return;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8225
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8226 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8227 * 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
8228 * 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
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 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
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 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
8233 return;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8234 }
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 /* 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
8237 * 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
8238 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8239 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
8240 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
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 /* 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
8243 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
8244 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8245 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
8246 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
8247 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
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
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8250 /* 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
8251 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
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 /* 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
8254 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
8255 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8256 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
8257 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
8258
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8259 /* 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
8260 * 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
8261 * 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
8262 * 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
8263 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8264 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
8265 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8266 /* 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
8267 * 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
8268 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8269 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
8270 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8271
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8272 /* 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
8273 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
8274 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
8275 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
8276 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
8277
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8278 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
8279 /* 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
8280 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
8281 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
8282 /* 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
8283 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
8284 {
0f340646a2ca GTK4: GtkPictures should be centered, not filled... don't clobber the
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2366
diff changeset
8285 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
8286 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
8287 }
2276
d7f0254f7d1e GTK4: Attempt fixing box and item padding using gtk_widget_set_margin_*().
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2275
diff changeset
8288 /* 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
8289 _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
8290 /* 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
8291 * 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
8292 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8293 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
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 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
8296 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
8297 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8298 else
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 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
8301 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
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 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
8304 /* 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
8305 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
8306 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8307 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
8308
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8309 /* 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
8310 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
8311 _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
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 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
8314 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
8315 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
8316 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
8317 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
8318 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
8319 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
8320 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
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 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8323 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8324 /* 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
8325 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
8326 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
8327 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
8328 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
8329 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8330 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
8331 }
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8332 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
8333 {
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8334 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
8335
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8336 if(groupstart)
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8337 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
8338 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8339 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
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 /* 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
8342 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
8343 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8344 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
8345 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
8346 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8347 }
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
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8350 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8351 * 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
8352 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8353 * 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
8354 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8355 * 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
8356 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
8357 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
8358 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
8359 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
8360 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
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 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
8363
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8364 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
8365 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8366 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
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 /* 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
8369 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
8370 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8371 /* 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
8372 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
8373 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
8374
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8375 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
8376 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8377 /* 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
8378 boxcount--;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8379 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
8380 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8381 /* 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
8382 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
8383 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8384 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
8385 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
8386 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8387 /* 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
8388 /* 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
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 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
8392
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8393 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
8394 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8395 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
8396 {
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_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
8398 break;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8399 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8400 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8401 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8402 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8403 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8404 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
8405
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8406 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
8407 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8408 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
8409 {
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_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
8411 break;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8412 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8413 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8414 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8415 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
8416 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8417 }
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
8418 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
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
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8421 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8422 * 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
8423 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8424 * 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
8425 * 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
8426 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8427 * 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
8428 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
8429 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
8430 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
8431 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
8432 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
8433 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8434 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
8435
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8436 /* 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
8437 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
8438 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8439 /* 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
8440 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
8441 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
8442 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
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 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
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 /* 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
8447 boxcount--;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8448 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
8449 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8450 /* 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
8451 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
8452 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
8453 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
8454 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8455 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
8456 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8457 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
8458 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
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 /* 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
8461 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
8462 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
8463 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
8464 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8465 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
8466 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
8467 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8468 }
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
8469 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
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
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 * 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
8474 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8475 * 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
8476 * 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
8477 * 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
8478 * 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
8479 * 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
8480 * 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
8481 * 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
8482 * 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
8483 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
8484 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
8485 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
8486 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
8487 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
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 _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
8490 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
8491 }
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 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8494 * 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
8495 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8496 * 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
8497 * 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
8498 * 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
8499 * 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
8500 * 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
8501 * 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
8502 * 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
8503 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
8504 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
8505 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
8506 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
8507 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
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 /* 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
8510 * 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
8511 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8512 _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
8513 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
8514 }
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 * 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
8518 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8519 * 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
8520 * 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
8521 * 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
8522 * 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
8523 * 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
8524 * 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
8525 * 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
8526 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
8527 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
8528 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
8529 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
8530 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
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 _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
8533 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
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
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8536 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8537 * 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
8538 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8539 * 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
8540 * 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
8541 * 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
8542 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
8543 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
8544 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
8545 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
8546 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
8547 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
8548 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
8549 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
8550 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
8551 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
8552 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
8553 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
8554 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
8555 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
8556 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8557
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8558 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8559 * 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
8560 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8561 * 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
8562 * 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
8563 * 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
8564 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
8565 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
8566 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
8567 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
8568 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
8569 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8570 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
8571 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8572 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
8573
2314
eda7642d80df GTK4: Code cleanup, add _dw prefix to internal functions and structures.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2313
diff changeset
8574 _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
8575
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8576 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
8577 *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
8578 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
8579 *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
8580 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8581 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8582 {
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8583 if(width)
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8584 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
8585 if(height)
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8586 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
8587 }
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
8588 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
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
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8591 /* 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
8592 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
8593 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8594 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
8595
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8596 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
8597 {
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8598 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
8599 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
8600
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8601 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
8602 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8603 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
8604 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
8605 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
8606 }
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 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
8609 }
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 * 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
8613 */
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
8614 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
8615 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
8616 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
8617 {
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
8618 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
8619 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
8620 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8621
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8622 /* 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
8623 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
8624 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8625 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
8626
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8627 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
8628 {
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8629 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
8630 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
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 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
8633 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8634 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
8635 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
8636 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
8637 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8638 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8639 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
8640 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8641
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8642 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8643 * 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
8644 */
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
8645 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
8646 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
8647 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
8648 {
4b04943319c5 GTK4: Move a few more functions into thread safety. Add API to functions
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2322
diff changeset
8649 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
8650 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
8651 }
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 /* 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
8654 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
8655 {
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8656 /* 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
8657 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
8658 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8659
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8660 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8661 * 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
8662 * 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
8663 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8664 * 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
8665 * 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
8666 * 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
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 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
8669 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8670 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
8671 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
8672 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8673
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8674 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8675 * 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
8676 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8677 * 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
8678 * 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
8679 * 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
8680 */
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
8681 #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
8682 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
8683 {
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
8684 }
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
8685 #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
8686 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
8687 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
8688 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
8689 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
8690 {
2324
610c66b17fbc GTK4: Put Xlib calls in GDK_IS_X11_DISPLAY() code checks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2323
diff changeset
8691 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
8692
610c66b17fbc GTK4: Put Xlib calls in GDK_IS_X11_DISPLAY() code checks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2323
diff changeset
8693 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
8694 {
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
8695 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
8696
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
8697 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
8698 {
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
8699 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
8700 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
8701 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
8702 }
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
8703 }
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
8704 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
8705 }
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
8706 #endif
2322
ebcaedfa7ff4 GTK4: Implement dw_pointer_set_pos() with Xlib. Also translate coordinate
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2321
diff changeset
8707
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8708 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8709 * 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
8710 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8711 * 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
8712 * 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
8713 * 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
8714 * 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
8715 * 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
8716 */
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
8717 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
8718 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8719 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
8720 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
8721 }
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 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8724 * 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
8725 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8726 * 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
8727 * 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
8728 * 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
8729 * 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
8730 * 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
8731 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
8732 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
8733 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
8734 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
8735 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
8736 {
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
8737 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
8738 {
2321
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
8739 GtkRequisition size;
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
8740
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
8741 /* 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
8742 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
8743
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
8744 if(width)
2321
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
8745 {
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
8746 *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
8747 if(!*width)
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
8748 *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
8749 }
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
8750 if(height)
2321
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
8751 {
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
8752 *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
8753 if(!*height)
52ca7647f665 GTK4: Implement pointer grabbing using Xlib and center message boxes.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2320
diff changeset
8754 *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
8755 }
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
8756
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
8757 #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
8758 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
8759 {
2324
610c66b17fbc GTK4: Put Xlib calls in GDK_IS_X11_DISPLAY() code checks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2323
diff changeset
8760 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
8761 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
8762
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
8763 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
8764 {
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
8765 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
8766 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
8767 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
8768
610c66b17fbc GTK4: Put Xlib calls in GDK_IS_X11_DISPLAY() code checks.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2323
diff changeset
8769 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
8770 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
8771 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
8772 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
8773
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
8774 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
8775 *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
8776 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
8777 *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
8778 }
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
8779 }
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 #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
8781 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
8782 *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
8783 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
8784 *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
8785 #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
8786 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
8787 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
8788 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8789
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8790 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8791 * 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
8792 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8793 * 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
8794 * 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
8795 * 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
8796 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
8797 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
8798 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
8799 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
8800 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
8801 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8802 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
8803
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8804 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
8805 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8806 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
8807 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
8808 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
8809 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8810 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
8811 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8812 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
8813 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
8814 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
8815 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8816 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
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 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
8819 {
2318
5951752fa7af GTK4: Implement borderless button style for buttons.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2317
diff changeset
8820 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
8821
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8822 if(style & DW_BS_NOBORDER)
2318
5951752fa7af GTK4: Implement borderless button style for buttons.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2317
diff changeset
8823 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
8824 else
2318
5951752fa7af GTK4: Implement borderless button style for buttons.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2317
diff changeset
8825 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
8826 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8827 }
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
8828 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
8829 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8830 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
8831 /* 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
8832 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
8833 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
8834 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
8835 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
8836 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
8837 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
8838 /* 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
8839 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
8840 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
8841 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
8842 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
8843 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
8844 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
8845 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
8846 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
8847 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
8848 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
8849 }
2317
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
8850 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
8851 {
b045bb67922d GTK4: Implement resizing of images in the layout manager.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2281
diff changeset
8852 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
8853
2317
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
8854 if(action)
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
8855 {
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
8856 if(mask & (DW_MIS_ENABLED | DW_MIS_DISABLED))
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
8857 {
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
8858 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
8859 {
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
8860 if(style & DW_MIS_ENABLED)
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
8861 g_simple_action_set_enabled(action, TRUE);
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
8862 else
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
8863 g_simple_action_set_enabled(action, FALSE);
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
8864 }
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
8865 }
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
8866 if(mask & (DW_MIS_CHECKED | DW_MIS_UNCHECKED))
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
8867 {
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
8868 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
8869 gboolean check = false;
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
8870
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
8871 if(style & DW_MIS_CHECKED)
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
8872 check = true;
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
8873
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
8874 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
8875 {
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
8876 GVariant *new_state = g_variant_new_boolean(check);
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
8877 g_simple_action_set_state(action, new_state);
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
8878 }
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
8879 }
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
8880 }
a2020f907a6c GTK4: Implement checkable menu items.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2316
diff changeset
8881 }
2305
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 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
8883 }
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 * 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
8887 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8888 * 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
8889 * 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
8890 * 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
8891 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
8892 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
8893 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
8894 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
8895 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
8896 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
8897 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
8898 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
8899 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
8900
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8901 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
8902
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(pagearray)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8904 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8905 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
8906 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8907 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
8908 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8909 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
8910 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
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 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
8913 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
8914
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8915 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
8916 /* 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
8917 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
8918 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
8919 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
8920 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8921 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8922 }
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
8923 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
8924 }
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 /* 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
8927 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
8928 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8929 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
8930 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
8931
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8932 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
8933 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8934 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
8935 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8936 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
8937 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8938 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
8939 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
8940 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8941 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8942 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8943 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
8944 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8945
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8946 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8947 * 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
8948 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8949 * 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
8950 * 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
8951 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
8952 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
8953 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
8954 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
8955 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
8956 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8957 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
8958 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
8959
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8960 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
8961 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8962 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
8963 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
8964 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
8965 }
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
8966 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
8967 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8968
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8969 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8970 * 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
8971 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8972 * 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
8973 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
8974 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
8975 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
8976 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
8977 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
8978 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
8979 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
8980 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
8981
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
8982 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
8983 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
8984 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8985
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8986 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8987 * 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
8988 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
8989 * 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
8990 * 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
8991 */
2305
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 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
8993 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
8994 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
8995 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
8996 {
2314
eda7642d80df GTK4: Code cleanup, add _dw prefix to internal functions and structures.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2313
diff changeset
8997 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
8998
2264
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(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
9000 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
9001 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
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
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 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9006 * 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
9007 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9008 * 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
9009 * 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
9010 * 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
9011 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9012 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
9013 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
9014 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
9015 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
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 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
9018 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
9019
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 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
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 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
9023 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
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 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
9026 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
9027 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
9028 }
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 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
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 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
9033 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
9034 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
9035 }
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9036 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
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 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9040 * 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
9041 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9042 * 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
9043 * 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
9044 * 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
9045 */
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
9046 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
9047 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9048 /* 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
9049 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9050
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9051 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9052 * 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
9053 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9054 * 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
9055 * 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
9056 * 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
9057 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9058 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
9059 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
9060 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
9061 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
9062 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9063 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
9064 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
9065 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
9066 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
9067
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9068 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
9069 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
9070 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
9071 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
9072
2305
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 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
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 /* 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
9076 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
9077 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9078 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
9079 {
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9080 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
9081 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
9082 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9083 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
9084 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
9085 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
9086 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
9087 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
9088 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
9089 }
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9090 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9091 }
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9092
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9093 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
9094
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9095 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
9096
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 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
9098 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
9099 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
9100 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
9101 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
9102 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
9103 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9104 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
9105 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9106
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9107 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9108 * 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
9109 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9110 * 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
9111 * 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
9112 */
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
9113 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
9114 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9115 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
9116 }
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 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9119 * 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
9120 * 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
9121 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9122 * 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
9123 * 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
9124 * 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
9125 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9126 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
9127 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
9128 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
9129 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
9130 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9131 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
9132 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
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 /* 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
9135 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
9136 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9137 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
9138 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
9139 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
9140 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9141 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
9142 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9143 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
9144
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9145 /* 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
9146 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
9147 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
9148 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
9149 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
9150
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9151 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
9152 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9153 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
9154 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9155 /* 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
9156 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
9157 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9158 else
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9159 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9160 /* 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
9161 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
9162 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9163 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
9164 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9165 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9166 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
9167 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9168
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9169 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9170 * 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
9171 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9172 * 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
9173 * 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
9174 * 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
9175 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9176 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
9177 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
9178 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
9179 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
9180 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9181 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
9182 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
9183
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9184 /* 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
9185 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
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 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
9188 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
9189 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
9190 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9191 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
9192 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9193 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
9194 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
9195
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9196 /* 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
9197 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
9198 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
9199 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
9200 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
9201
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9202 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
9203 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9204 /* 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
9205 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
9206 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9207 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
9208 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
9209 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9210 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9211 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9212 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
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 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9216 * 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
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 cleared.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9219 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9220 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
9221 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
9222 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
9223 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
9224
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9225 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9226 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
9227 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
9228
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9229 /* 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
9230 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
9231 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9232 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
9233 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
9234 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
9235 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9236 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
9237 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9238 /* 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
9239 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
9240 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
9241 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
9242 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
9243
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9244 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
9245 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9246 /* 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
9247 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
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 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9250 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
9251 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9252
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9253 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9254 * 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
9255 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9256 * 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
9257 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9258 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
9259 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
9260 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
9261 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
9262 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9263 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
9264 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
9265 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
9266
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9267 /* 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
9268 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
9269 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9270 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
9271 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
9272 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
9273 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9274 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
9275 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9276 /* 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
9277 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
9278 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
9279 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
9280 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
9281
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9282 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
9283 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9284 /* 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
9285 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
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 }
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9288 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
9289 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9290
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 * 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
9293 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9294 * 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
9295 * 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
9296 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9297 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
9298 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
9299 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
9300 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
9301
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9302 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9303 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
9304
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9305 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
9306 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9307 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
9308 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
9309 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
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 /* 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
9312 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
9313 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9314 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
9315 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
9316
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9317 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
9318 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9319 /* 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
9320 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
9321 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
9322 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
9323 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
9324 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
9325
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9326 /* 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
9327 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
9328 {
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9329 /* 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
9330 rowcount--;
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9331 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
9332 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
9333
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9334 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
9335
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9336 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
9337 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9338 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9339 }
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9340 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
9341 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9342
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9343 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9344 * 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
9345 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9346 * 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
9347 * 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
9348 * 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
9349 * 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
9350 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9351 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
9352 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
9353 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
9354 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
9355
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9356 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9357 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
9358 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
9359
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9360 /* 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
9361 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
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 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
9364 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
9365 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
9366 }
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(handle2)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9368 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9369 /* 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
9370 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
9371 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
9372 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
9373 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
9374
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9375 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
9376 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9377 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
9378
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9379 /* 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
9380 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
9381 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9382 /* 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
9383 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
9384 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
9385 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
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 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
9388 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
9389 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9390 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9391 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9392 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9393 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
9394 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
9395 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9396
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9397 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9398 * 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
9399 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9400 * 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
9401 * 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
9402 * 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
9403 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9404 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
9405 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
9406 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
9407 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
9408 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9409 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
9410 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
9411
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9412 /* 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
9413 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
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 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
9416 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
9417 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
9418 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9419 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
9420 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9421 /* 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
9422 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
9423 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
9424 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
9425 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
9426
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9427 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
9428 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9429 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
9430
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9431 /* 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
9432 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
9433 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9434 /* Update 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
9435 gtk_list_store_set(store, &iter, buffer);
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9436 }
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 }
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9439 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
9440 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9441
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9442 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9443 * 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
9444 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9445 * 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
9446 * 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
9447 */
2304
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_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
9449 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
9450 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
9451 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
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;
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 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
9456
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9457 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
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 /* 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
9460 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
9461 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
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(store)
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 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
9466 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
9467
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9468 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
9469 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9470 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
9471 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
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 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
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 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
9476
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9477 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
9478 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9479 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
9480 break;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9481 }
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 counter++;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9484 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
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 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
9488 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
9489 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9490 }
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9491 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
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 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9495 * 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
9496 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9497 * 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
9498 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9499 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
9500 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
9501 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
9502 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
9503 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9504 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
9505 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
9506 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
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)
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 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
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 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
9528 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
9529 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
9530 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9531 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
9532 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
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 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
9535 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9536 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
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 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
9540 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
9541 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9542 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9543 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9544 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9545 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
9546 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
9547
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9548 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
9549 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9550 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
9551 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
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 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
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 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
9556 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9557 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
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 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
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 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9562 }
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 }
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9565 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
9566 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9567
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 * 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
9570 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9571 * 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
9572 * 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
9573 * 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
9574 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9575 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
9576 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
9577 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
9578 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
9579 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9580 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
9581 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
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 /* 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
9584 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
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 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
9587 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
9588 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
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 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
9591 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9592 /* 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
9593 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
9594 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
9595 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
9596 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
9597
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9598 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
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 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
9601
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9602 /* 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
9603 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
9604 {
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_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
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 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
9608 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9609 else
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 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
9612 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
9613 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9614 /* 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
9615 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
9616 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9617 else
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 /* 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
9620 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
9621 }
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 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9624 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9625 }
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9626 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
9627 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9628
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 * 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
9631 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9632 * 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
9633 * 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
9634 */
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9635 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
9636 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
9637 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
9638 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
9639 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9640 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
9641 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
9642
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9643 /* 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
9644 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
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 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
9647 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
9648 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
9649 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9650 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
9651 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9652 /* 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
9653 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
9654 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
9655 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
9656 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
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 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
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 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
9661
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9662 /* 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
9663 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
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 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
9666 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9667 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9668 }
2304
ae6f678cb1a9 GTK4: Implement thread safety system based on the new MacOS thread code.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2303
diff changeset
9669 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
9670 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9671
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9672 /* 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
9673 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
9674 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9675 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
9676 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
9677
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9678 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
9679 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9680 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
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 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
9683
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
9684 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
9685 {
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
9686 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
9687 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
9688 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
9689 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
9690 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
9691 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
9692 }
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9693 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
9694 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
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 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
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
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9699 /* 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
9700 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
9701 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9702 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
9703
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9704 /* 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
9705 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
9706 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
9707
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
9708 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
9709 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
9710 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9711
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 * 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
9714 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9715 * 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
9716 * 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
9717 * 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
9718 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9719 * 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
9720 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9721 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
9722 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
9723 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
9724 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
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 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
9727 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
9728
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9729 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
9730 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
9731 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
9732 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
9733 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
9734 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
9735 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
9736 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
9737 *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
9738 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
9739 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
9740 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
9741 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
9742 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9743
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9744 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9745 * 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
9746 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9747 * 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
9748 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9749 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
9750 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
9751 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
9752 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
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 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
9755 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
9756
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9757 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
9758 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
9759 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9760 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
9761
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9762 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
9763 *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
9764
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9765 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
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 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
9768
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9769 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
9770 }
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9771 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
9772 }
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 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9775 * 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
9776 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9777 * 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
9778 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9779 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
9780 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
9781 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
9782 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
9783 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9784 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
9785 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
9786
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9787 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
9788 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
9789 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
9790 }
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 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9793 * 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
9794 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9795 * 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
9796 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9797 * 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
9798 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9799 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
9800 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
9801 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
9802 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
9803 {
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
9804 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
9805 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
9806 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
9807
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9808 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
9809 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
9810 /* select today */
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
9811 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
9812 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
9813 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
9814 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
9815 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
9816 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
9817 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9818
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9819 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9820 * 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
9821 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9822 * 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
9823 * year...
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9824 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9825 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
9826 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
9827 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
9828 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
9829 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9830 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
9831 {
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
9832 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
9833 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
9834 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
9835 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
9836 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
9837 }
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9838 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
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 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9842 * 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
9843 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9844 * 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
9845 */
2305
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_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
9847 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
9848 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
9849 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
9850 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9851 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
9852 {
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
9853 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
9854 if(year)
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
9855 *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
9856 if(month)
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
9857 *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
9858 if(day)
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
9859 *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
9860 }
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9861 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
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
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 * 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
9866 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9867 * 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
9868 * Remarks:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9869 * 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
9870 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9871 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
9872 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
9873 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
9874 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
9875 {
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 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
9877 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
9878 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
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
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9881 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9882 * 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
9883 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9884 * 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
9885 * 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
9886 * Remarks:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9887 * 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
9888 */
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
9889 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
9890 {
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9891 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
9892 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
9893 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9894
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9895 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9896 * 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
9897 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9898 * 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
9899 * 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
9900 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
9901 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
9902 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
9903 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
9904 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
9905 {
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
9906 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
9907 {
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
9908 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
9909 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
9910 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
9911 }
2305
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_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
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 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9917 * 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
9918 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9919 * 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
9920 * 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
9921 * 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
9922 * 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
9923 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9924 * 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
9925 * 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
9926 * Remarks:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9927 * 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
9928 * 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
9929 */
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
9930 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
9931 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9932 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
9933
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9934 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
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 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
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 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
9939 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
9940
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9941 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
9942 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
9943 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
9944
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9945 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
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(imagepath)
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9948 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9949 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
9950 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
9951
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9952 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
9953 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9954 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
9955
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9956 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
9957 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
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 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
9961 (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
9962 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9963 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
9964 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9965
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9966 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9967 * 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
9968 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9969 * 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
9970 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9971 * 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
9972 */
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
9973 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
9974 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9975 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
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 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
9978
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9979 /* 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
9980 * 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
9981 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9982 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
9983 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
9984 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
9985 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9986 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
9987 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9988
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 * 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
9991 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9992 * 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
9993 */
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
9994 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
9995 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9996 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
9997 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
9998
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
9999 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
10000 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
10001 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
10002 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
10003
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10004 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
10005 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
10006 #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
10007 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
10008 #else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10009 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
10010 #endif
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10011 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
10012 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
10013 #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
10014 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
10015 #else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10016 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
10017 #endif
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10018
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10019 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
10020 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10021 *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
10022 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
10023 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
10024 return;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10025 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10026 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
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
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 * 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
10031 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10032 * 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
10033 * 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
10034 * 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
10035 * 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
10036 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10037 * 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
10038 * 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
10039 *
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10040 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
10041 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
10042 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
10043 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
10044 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
10045 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10046 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
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 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
10049 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
10050 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
10051 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
10052 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
10053 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
10054 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
10055
2346
7b04d1b9f2eb GTK4: Fix warning message from dW_file_browse() and code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2341
diff changeset
10056 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
10057 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10058 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
10059 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
10060 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
10061 break;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10062 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
10063 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
10064 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
10065 break;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10066 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
10067 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
10068 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
10069 break;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10070 default:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10071 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
10072 break;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10073 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10074
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
10075 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
10076 {
2346
7b04d1b9f2eb GTK4: Fix warning message from dW_file_browse() and code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2341
diff changeset
10077 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
10078 NULL,
7b04d1b9f2eb GTK4: Fix warning message from dW_file_browse() and code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2341
diff changeset
10079 action,
7b04d1b9f2eb GTK4: Fix warning message from dW_file_browse() and code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2341
diff changeset
10080 _("_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
10081 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
10082 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
10083
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
10084 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
10085 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
10086 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
10087 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
10088 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
10089 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
10090 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
10091 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
10092 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
10093 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
10094 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
10095 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
10096 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
10097
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
10098 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
10099 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
10100 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
10101
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
10102 /* 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
10103 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
10104 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
10105 /* 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
10106 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
10107 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
10108 else
7b04d1b9f2eb GTK4: Fix warning message from dW_file_browse() and code cleanup.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2341
diff changeset
10109 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
10110
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
10111 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
10112 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
10113 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
10114
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
10115 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
10116 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
10117
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
10118 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
10119 {
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
10120 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
10121 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
10122 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
10123 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
10124
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
10125 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
10126 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
10127 }
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
10128 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
10129 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10130
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
10131 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
10132 {
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
10133 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
10134 }
2264
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 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10137 * 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
10138 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10139 * 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
10140 * 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
10141 * 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
10142 * 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
10143 * 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
10144 */
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
10145 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
10146 {
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
10147 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
10148 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
10149 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
10150
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
10151 /* 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
10152 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
10153 {
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
10154 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
10155
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
10156 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
10157 {
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
10158 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
10159 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
10160 }
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
10161 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
10162 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
10163 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
10164 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
10165 {
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
10166 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
10167 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
10168 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
10169 }
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
10170 }
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
10171 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
10172 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
10173
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
10174 /* 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
10175 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
10176 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
10177 {
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
10178 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
10179
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
10180 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
10181
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
10182 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
10183
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
10184 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
10185 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
10186 }
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
10187 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
10188 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
10189 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10190
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10191 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10192 * 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
10193 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10194 * 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
10195 */
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
10196 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
10197 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10198 /* 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
10199 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
10200 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
10201 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10202
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10203 #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
10204 /* 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
10205 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
10206 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10207 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
10208 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10209 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
10210 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
10211 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
10212 #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
10213 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
10214 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
10215 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
10216 #endif
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10217 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10218 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
10219 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10220 #endif
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10221 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10222 * 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
10223 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10224 * 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
10225 * 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
10226 */
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
10227 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
10228 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10229 #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
10230 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
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 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
10233 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10234 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
10235 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10236 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
10237 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
10238 break;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10239 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
10240 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
10241 break;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10242 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
10243 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
10244 break;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10245 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
10246 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
10247 break;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10248 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
10249 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
10250 break;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10251 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
10252 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10253 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
10254 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
10255 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
10256 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10257 break;
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10258 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10259 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10260 #endif
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10261 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10262
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10263 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10264 * 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
10265 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10266 * 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
10267 * 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
10268 * 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
10269 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10270 * 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
10271 */
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
10272 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
10273 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10274 #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
10275 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
10276
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10277 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
10278 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10279 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
10280 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
10281 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10282 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
10283 #else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10284 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
10285 #endif
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 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10289 * 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
10290 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10291 * 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
10292 * 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
10293 * 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
10294 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10295 * 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
10296 */
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
10297 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
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 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
10301
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10302 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
10303 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10304 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
10305 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
10306 }
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 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
10308 #else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10309 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
10310 #endif
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10311 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10312
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 * 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
10315 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10316 * 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
10317 * 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
10318 * 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
10319 * 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
10320 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10321 * 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
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 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
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)))
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
10329 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
10330 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
10331 #else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10332 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
10333 #endif
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10334 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10335
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10336 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10337 * 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
10338 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10339 * 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
10340 */
2305
047ad6a5cc1d GTK4: Add more functions to the thread safety system... might need to do
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2304
diff changeset
10341 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
10342 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
10343 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
10344 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
10345 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10346 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
10347 #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
10348 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
10349 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
10350
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10351 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
10352 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
10353 /* 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
10354 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
10355 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
10356 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
10357 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
10358 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
10359 #else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10360 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
10361 #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
10362 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
10363 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10364
2274
b0bdd54bb2e8 GTK4: Implemented clipboard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2273
diff changeset
10365 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
10366 {
b0bdd54bb2e8 GTK4: Implemented clipboard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2273
diff changeset
10367 DWDialog *tmp = (DWDialog *)data;
b0bdd54bb2e8 GTK4: Implemented clipboard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2273
diff changeset
10368
b0bdd54bb2e8 GTK4: Implemented clipboard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2273
diff changeset
10369 if(tmp && tmp->data)
b0bdd54bb2e8 GTK4: Implemented clipboard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2273
diff changeset
10370 {
b0bdd54bb2e8 GTK4: Implemented clipboard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2273
diff changeset
10371 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
10372
b0bdd54bb2e8 GTK4: Implemented clipboard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2273
diff changeset
10373 dw_dialog_dismiss(tmp, text ? strdup(text) : text);
b0bdd54bb2e8 GTK4: Implemented clipboard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2273
diff changeset
10374 }
b0bdd54bb2e8 GTK4: Implemented clipboard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2273
diff changeset
10375 }
b0bdd54bb2e8 GTK4: Implemented clipboard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2273
diff changeset
10376
2264
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 * 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
10379 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10380 * None.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10381 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10382 * 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
10383 * 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
10384 */
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
10385 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
10386 {
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
10387 GdkDisplay *display = gdk_display_get_default();
2274
b0bdd54bb2e8 GTK4: Implemented clipboard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2273
diff changeset
10388 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
10389 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
10390
2274
b0bdd54bb2e8 GTK4: Implemented clipboard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2273
diff changeset
10391 if((clipboard = gdk_display_get_clipboard(display)))
b0bdd54bb2e8 GTK4: Implemented clipboard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2273
diff changeset
10392 {
b0bdd54bb2e8 GTK4: Implemented clipboard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2273
diff changeset
10393 DWDialog *tmp = dw_dialog_new(DW_POINTER(clipboard));
b0bdd54bb2e8 GTK4: Implemented clipboard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2273
diff changeset
10394
b0bdd54bb2e8 GTK4: Implemented clipboard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2273
diff changeset
10395 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
10396
b0bdd54bb2e8 GTK4: Implemented clipboard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2273
diff changeset
10397 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
10398 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10399 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
10400 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10401
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 * 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
10404 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10405 * Text.
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10406 */
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
10407 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
10408 {
2266
bb0690c04413 GTK4: First buildable version... although tons still left to do.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2265
diff changeset
10409 GdkDisplay *display = gdk_display_get_default();
2274
b0bdd54bb2e8 GTK4: Implemented clipboard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2273
diff changeset
10410 GdkClipboard *clipboard;
b0bdd54bb2e8 GTK4: Implemented clipboard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2273
diff changeset
10411
b0bdd54bb2e8 GTK4: Implemented clipboard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2273
diff changeset
10412 if((clipboard = gdk_display_get_clipboard(display)))
b0bdd54bb2e8 GTK4: Implemented clipboard.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2273
diff changeset
10413 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
10414 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10415
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10416 /* 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
10417 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
10418 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10419 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
10420 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
10421 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
10422 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
10423 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
10424
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10425 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
10426 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10427 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
10428 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
10429 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
10430 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
10431 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
10432 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
10433 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
10434 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
10435 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10436 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10437
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10438 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10439 * 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
10440 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10441 * 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
10442 * 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
10443 * 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
10444 * 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
10445 * 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
10446 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10447 * 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
10448 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10449 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
10450 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10451 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
10452
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10453 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
10454 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
10455
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10456 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
10457 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10458 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
10459 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
10460 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
10461 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
10462 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
10463 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10464 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
10465 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10466
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10467 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10468 * 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
10469 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10470 * 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
10471 * 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
10472 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10473 * 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
10474 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10475 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
10476 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10477 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
10478 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
10479
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10480 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
10481 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
10482 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10483
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10484 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10485 * 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
10486 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10487 * 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
10488 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10489 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
10490 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10491 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
10492
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10493 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
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
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 * 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
10498 * 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
10499 * 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
10500 */
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
10501 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
10502 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10503 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
10504
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10505 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
10506 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10507 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
10508
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10509 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
10510 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
10511 else
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10512 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
10513 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10514 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
10515 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10516
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10517 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10518 * 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
10519 * 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
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 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
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 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
10524 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10525
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10526 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10527 * 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
10528 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10529 * 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
10530 * 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
10531 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10532 * 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
10533 * 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
10534 * 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
10535 * Remarks:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10536 * 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
10537 * 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
10538 * 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
10539 * 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
10540 * 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
10541 */
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
10542 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
10543 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10544 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
10545 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10546 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
10547 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
10548 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
10549 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
10550 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10551 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
10552 }
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 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10555 * 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
10556 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10557 * 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
10558 * 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
10559 * 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
10560 */
2334
29220ecf8db8 GTK4: dw_window_function() actually calls on the main thread now.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2333
diff changeset
10561 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
10562 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
10563 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
10564 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
10565 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10566 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
10567
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10568 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
10569
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10570 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
10571 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
10572 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
10573 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10574
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 * 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
10577 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10578 * 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
10579 * 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
10580 * 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
10581 */
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
10582 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
10583 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10584 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
10585
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10586 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
10587 return;
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 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
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 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
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 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
10594 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
10595 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10596
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10597 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10598 * 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
10599 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10600 * 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
10601 * 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
10602 * 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
10603 */
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
10604 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
10605 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10606 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
10607 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
10608
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10609 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
10610 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
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 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
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 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
10615 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10616 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
10617 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
10618 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
10619 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10620
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
10621 /*
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
10622 * 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
10623 * 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
10624 * 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
10625 * 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
10626 * 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
10627 * 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
10628 */
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
10629 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
10630 {
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
10631 /* 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
10632 * 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
10633 */
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
10634 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
10635 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
10636 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
10637 }
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
10638
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 /* 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
10640 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
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 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
10643 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
10644 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
10645 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
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 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
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 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
10650 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
10651 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
10652 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
10653 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10654 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
10655 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10656 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
10657 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
10658 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
10659 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10660 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
10661 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
10662 }
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 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10665 * 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
10666 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10667 * 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
10668 * 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
10669 * 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
10670 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10671 * 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
10672 */
2584
2acc7ba5dea0 Add HTIMER type and change dw_timer_() functions to use it.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2532
diff changeset
10673 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
10674 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10675 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
10676 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
10677
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10678 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
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 *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
10681 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
10682 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
10683 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
10684 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
10685 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
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
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 * 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
10690 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10691 * 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
10692 */
2584
2acc7ba5dea0 Add HTIMER type and change dw_timer_() functions to use it.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2532
diff changeset
10693 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
10694 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10695 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
10696
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10697 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
10698 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
10699 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
10700 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
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
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10703 /* 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
10704 * 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
10705 */
2314
eda7642d80df GTK4: Code cleanup, add _dw prefix to internal functions and structures.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2313
diff changeset
10706 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
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 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
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 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
10711 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
10712 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
10713 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
10714 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
10715 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
10716 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
10717 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10718
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10719 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10720 * 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
10721 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10722 * 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
10723 * 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
10724 * 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
10725 * 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
10726 */
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
10727 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
10728 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10729 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
10730 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10731
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10732 /* 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
10733 * 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
10734 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10735 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
10736 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10737 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
10738 {
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 **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
10740 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
10741
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10742 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
10743 {
2626
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
10744 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
10745
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10746 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
10747 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10748 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
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 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10751 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
10752 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10753 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10754
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10755 #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
10756
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10757 /* Signal setup functions */
2292
fa19fce045aa GTK4: Remove unnecessary parameter to the setup functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2291
diff changeset
10758 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
10759 {
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
10760 /* 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
10761 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
10762 {
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
10763 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
10764 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
10765 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
10766 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
10767
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
10768 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
10769 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
10770 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
10771 _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
10772 }
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10773 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
10774 {
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10775 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
10776 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
10777 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
10778 }
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10779 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
10780 }
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10781
2292
fa19fce045aa GTK4: Remove unnecessary parameter to the setup functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2291
diff changeset
10782 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
10783 {
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10784 /* 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
10785 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
10786 {
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10787 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
10788 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
10789 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
10790 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
10791 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
10792 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
10793 }
2269
a26cfd4bbffe GTK4: More work on signal handlers, and disable the font CSS override.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2268
diff changeset
10794 /* 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
10795 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
10796 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
10797 /* 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
10798 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
10799 {
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
10800 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
10801
2273
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
10802 if(action)
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
10803 {
2291
ce1b9e558584 GTK4: Fix minor logic error causing menu activation callbacks to fail.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2290
diff changeset
10804 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
10805 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
10806
3c3f0023ae02 GTK4: Fix menu action setup by adding code to install group actions into
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2289
diff changeset
10807 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
10808 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
10809 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
10810 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
10811 _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
10812 }
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
10813 return NULL;
95796965bb01 GTK4: More menu work, something still isn't working.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2272
diff changeset
10814 }
2269
a26cfd4bbffe GTK4: More work on signal handlers, and disable the font CSS override.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2268
diff changeset
10815 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
10816 }
a26cfd4bbffe GTK4: More work on signal handlers, and disable the font CSS override.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2268
diff changeset
10817
2292
fa19fce045aa GTK4: Remove unnecessary parameter to the setup functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2291
diff changeset
10818 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
10819 {
a26cfd4bbffe GTK4: More work on signal handlers, and disable the font CSS override.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2268
diff changeset
10820 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
10821 {
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10822 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
10823 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
10824 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
10825 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
10826 }
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10827 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
10828 }
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10829
2292
fa19fce045aa GTK4: Remove unnecessary parameter to the setup functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2291
diff changeset
10830 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
10831 {
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10832 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
10833 {
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10834 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
10835 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
10836 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
10837 }
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10838 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
10839 }
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10840
2292
fa19fce045aa GTK4: Remove unnecessary parameter to the setup functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2291
diff changeset
10841 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
10842 {
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10843 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
10844 {
2281
0e93b09ed0e1 GTK4: Cache the cairo context during the drawing area callback. This allows
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2280
diff changeset
10845 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
10846 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
10847 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
10848 }
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10849 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
10850 }
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10851
2292
fa19fce045aa GTK4: Remove unnecessary parameter to the setup functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2291
diff changeset
10852 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
10853 {
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10854 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
10855 {
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10856 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
10857 {
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10858 /* 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
10859 * 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
10860 */
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
10861 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
10862 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
10863 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
10864 }
2270
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
10865 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
10866 {
819f2492c85f GTK4: More signal cleanup, fix various issues with windows and dialogs.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2269
diff changeset
10867 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
10868 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
10869 }
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10870 else
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10871 {
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10872 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
10873 /* 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
10874 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
10875 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
10876 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
10877 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
10878 }
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 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
10881 }
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10882
2292
fa19fce045aa GTK4: Remove unnecessary parameter to the setup functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2291
diff changeset
10883 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
10884 {
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10885 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
10886 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
10887 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
10888 }
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10889
2292
fa19fce045aa GTK4: Remove unnecessary parameter to the setup functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2291
diff changeset
10890 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
10891 {
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10892 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
10893 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
10894 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
10895 }
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10896
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
10897 #ifdef USE_WEBKIT
2292
fa19fce045aa GTK4: Remove unnecessary parameter to the setup functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2291
diff changeset
10898 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
10899 {
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10900 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
10901 {
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10902 /* 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
10903 * 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
10904 */
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
10905 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
10906 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
10907 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
10908 }
2271
1c52cd5a817f GTK4: More refactoring, and started working on menus, but not entirely sure
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2270
diff changeset
10909 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
10910 }
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10911 #endif
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10912
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10913 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10914 * 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
10915 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10916 * 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
10917 * 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
10918 * 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
10919 * 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
10920 * 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
10921 */
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
10922 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
10923 {
2628
d3d8a93124f1 GTK4: Fix compilation after style standarization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2626
diff changeset
10924 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
10925
2269
a26cfd4bbffe GTK4: More work on signal handlers, and disable the font CSS override.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2268
diff changeset
10926 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
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 GObject *object = (GObject *)window;
2292
fa19fce045aa GTK4: Remove unnecessary parameter to the setup functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2291
diff changeset
10929 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
10930 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
10931 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
10932
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 * 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
10935 * 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
10936 */
2268
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10937 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
10938 #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
10939 && !(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
10940 #endif
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10941 )
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10942 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
10943
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10944 /* 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
10945 if(signal.setup)
2292
fa19fce045aa GTK4: Remove unnecessary parameter to the setup functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2291
diff changeset
10946 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
10947
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10948 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
10949 return;
2292
fa19fce045aa GTK4: Remove unnecessary parameter to the setup functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2291
diff changeset
10950
fa19fce045aa GTK4: Remove unnecessary parameter to the setup functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2291
diff changeset
10951 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
10952 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
10953 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
10954 /* Save the disconnect function pointer */
fa19fce045aa GTK4: Remove unnecessary parameter to the setup functions.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2291
diff changeset
10955 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
10956 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
10957 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
10958 _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
10959 }
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10960 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10961
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10962 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10963 * 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
10964 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10965 * 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
10966 */
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
10967 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
10968 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10969 int z, count;
2628
d3d8a93124f1 GTK4: Fix compilation after style standarization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2626
diff changeset
10970 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
10971 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
10972
2314
eda7642d80df GTK4: Code cleanup, add _dw prefix to internal functions and structures.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2313
diff changeset
10973 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
10974 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
10975 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
10976
a26cfd4bbffe GTK4: More work on signal handlers, and disable the font CSS override.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2268
diff changeset
10977 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
10978 {
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10979 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
10980 {
2626
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
10981 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
10982
fefeb5b4e512 GTK4: Complete refactoring of the signal system to be more simple and
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2267
diff changeset
10983 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
10984 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
10985
2269
a26cfd4bbffe GTK4: More work on signal handlers, and disable the font CSS override.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2268
diff changeset
10986 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
10987 _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
10988 }
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10989 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10990 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10991
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10992 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10993 * 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
10994 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10995 * 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
10996 */
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
10997 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
10998 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
10999 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
11000 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
11001
2314
eda7642d80df GTK4: Code cleanup, add _dw prefix to internal functions and structures.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2313
diff changeset
11002 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
11003 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
11004
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11005 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
11006 _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
11007 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
11008 }
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 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11011 * 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
11012 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11013 * 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
11014 * 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
11015 */
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
11016 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
11017 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11018 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
11019 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
11020
2314
eda7642d80df GTK4: Code cleanup, add _dw prefix to internal functions and structures.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2313
diff changeset
11021 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
11022 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
11023
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11024 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
11025 {
2626
401a3b9f21ba Massive continuation of code style standardization.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2618
diff changeset
11026 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
11027
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11028 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
11029 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
11030
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11031 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
11032 _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
11033 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11034 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11035
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11036 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11037 * 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
11038 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11039 * 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
11040 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11041 * 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
11042 * 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
11043 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11044 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
11045 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11046 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
11047
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11048 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
11049 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
11050 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
11051 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
11052 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
11053 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11054 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
11055 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
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 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
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
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11060 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11061 * 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
11062 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11063 * 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
11064 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11065 * 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
11066 * 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
11067 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11068 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
11069 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11070 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
11071
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11072 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
11073 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
11074 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
11075 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
11076 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
11077 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11078 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
11079 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
11080 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11081 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
11082 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11083
2506
fa976a5bc7bd Add DW_FEATURE_WINDOW_PLACEMENT for platforms supporting arbitrary window placement.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2470
diff changeset
11084 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
11085 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
11086 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
11087 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
11088 {
fa976a5bc7bd Add DW_FEATURE_WINDOW_PLACEMENT for platforms supporting arbitrary window placement.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2470
diff changeset
11089 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
11090 #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
11091 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
11092
fa976a5bc7bd Add DW_FEATURE_WINDOW_PLACEMENT for platforms supporting arbitrary window placement.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2470
diff changeset
11093 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
11094 {
fa976a5bc7bd Add DW_FEATURE_WINDOW_PLACEMENT for platforms supporting arbitrary window placement.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2470
diff changeset
11095 retval = trueresult;
fa976a5bc7bd Add DW_FEATURE_WINDOW_PLACEMENT for platforms supporting arbitrary window placement.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2470
diff changeset
11096 }
fa976a5bc7bd Add DW_FEATURE_WINDOW_PLACEMENT for platforms supporting arbitrary window placement.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2470
diff changeset
11097 #endif
fa976a5bc7bd Add DW_FEATURE_WINDOW_PLACEMENT for platforms supporting arbitrary window placement.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2470
diff changeset
11098 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
11099 }
fa976a5bc7bd Add DW_FEATURE_WINDOW_PLACEMENT for platforms supporting arbitrary window placement.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2470
diff changeset
11100
2264
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11101 /*
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11102 * 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
11103 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11104 * 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
11105 * Returns:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11106 * 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
11107 * 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
11108 * 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
11109 * 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
11110 */
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11111 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
11112 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11113 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
11114 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11115 #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
11116 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
11117 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
11118 #endif
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11119 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
11120 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
11121 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
11122 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
11123 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
11124 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
11125 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
11126 default:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11127 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
11128 }
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 * 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
11133 * Parameters:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11134 * 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
11135 * 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
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 * 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
11138 * 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
11139 * 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
11140 * Remarks:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11141 * 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
11142 * 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
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 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
11145 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11146 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
11147 {
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11148 /* 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
11149 #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
11150 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
11151 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
11152 #endif
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11153 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
11154 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
11155 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
11156 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
11157 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
11158 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
11159 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
11160 /* 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
11161 default:
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11162 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
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 }
5c981407b0f3 GTK4: Add experimental support for GTK4... This is in progress and doesn't
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents:
diff changeset
11165
2313
c6ea79c74c03 GTK4: Remove some lingering eventbox code from GTK3.
bsmith@81767d24-ef19-dc11-ae90-00e081727c95
parents: 2312
diff changeset
11166