ui/cocoa/webview.m

Sun, 26 Oct 2025 10:07:31 +0100

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Sun, 26 Oct 2025 10:07:31 +0100
changeset 875
0575ca45f1bb
child 876
2131c806440d
permissions
-rw-r--r--

add cleanup/destroy handler for UiString, UiText and UiGeneric

875
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
1 /*
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
2 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
3 *
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
4 * Copyright 2025 Olaf Wintermann. All rights reserved.
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
5 *
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
6 * Redistribution and use in source and binary forms, with or without
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
7 * modification, are permitted provided that the following conditions are met:
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
8 *
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
9 * 1. Redistributions of source code must retain the above copyright
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
10 * notice, this list of conditions and the following disclaimer.
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
11 *
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
12 * 2. Redistributions in binary form must reproduce the above copyright
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
13 * notice, this list of conditions and the following disclaimer in the
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
14 * documentation and/or other materials provided with the distribution.
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
15 *
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
17 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
19 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
20 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
23 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
24 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
26 * POSSIBILITY OF SUCH DAMAGE.
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
27 */
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
28
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
29 #import "webview.h"
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
30 #import "Container.h"
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
31
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
32 UIWIDGET ui_webview_create(UiObject *obj, UiWebviewArgs *args) {
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
33 WKWebView *webview = [[WKWebView alloc]init];
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
34
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
35 UiLayout layout = UI_ARGS2LAYOUT(args);
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
36 ui_container_add(obj, webview, &layout);
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
37
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
38 UiVar *var = uic_widget_var(obj->ctx, obj->ctx, args->value, args->varname, UI_VAR_GENERIC);
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
39 if(var) {
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
40 UiGeneric *value = var->value;
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
41 value->get = ui_webview_get;
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
42 value->get_type = ui_webview_get_type;
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
43 value->set = ui_webview_set;
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
44 value->destroy = ui_webview_destroy;
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
45 value->obj = (__bridge void*)webview;
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
46 if(value->value) {
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
47 ui_webview_set(value, value->value, UI_WEBVIEW_OBJECT_TYPE);
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
48 } else {
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
49 UiWebViewData *data = malloc(sizeof(UiWebViewData));
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
50 memset(data, 0, sizeof(UiWebViewData));
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
51 data->webview = (__bridge void*)webview;
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
52 data->javascript = TRUE;
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
53 data->zoom = 1;
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
54 value->value = value;
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
55 }
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
56 }
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
57
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
58 return (__bridge void*)webview;
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
59 }
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
60
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
61 UiWebViewData* ui_webview_data_clone(UiWebViewData *data) {
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
62 UiWebViewData *newdata = malloc(sizeof(UiWebViewData));
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
63 memset(newdata, 0, sizeof(UiWebViewData));
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
64
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
65 if(data) {
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
66 newdata->uri = data->uri ? strdup(data->uri) : NULL;
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
67 newdata->mimetype = data->mimetype ? strdup(data->mimetype) : NULL;
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
68 newdata->encoding = data->encoding ? strdup(data->encoding) : NULL;
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
69 newdata->type = data->type;
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
70 newdata->javascript = data->javascript;
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
71 newdata->zoom = data->zoom;
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
72 if(data->content && data->contentlength > 0) {
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
73 newdata->content = malloc(data->contentlength + 1);
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
74 memcpy(newdata->content, data->content, data->contentlength);
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
75 newdata->content[data->contentlength] = 0;
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
76 newdata->contentlength = data->contentlength;
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
77 }
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
78 }
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
79
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
80 return newdata;
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
81 }
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
82
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
83 void ui_webview_data_free(UiWebViewData *data) {
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
84 if(!data) {
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
85 return;
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
86 }
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
87 free(data->uri);
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
88 free(data->mimetype);
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
89 free(data->encoding);
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
90 free(data->content);
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
91 free(data);
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
92 }
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
93
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
94 void* ui_webview_get(UiGeneric *g) {
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
95 return ui_webview_data_clone(g->value);
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
96 }
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
97
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
98 const char* ui_webview_get_type(UiGeneric *g) {
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
99 return UI_WEBVIEW_OBJECT_TYPE;
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
100 }
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
101
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
102 int ui_webview_set(UiGeneric *g, void *data, const char *type) {
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
103 if(!data || !type) {
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
104 return 1;
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
105 }
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
106 if(strcmp(type, UI_WEBVIEW_OBJECT_TYPE)) {
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
107 return 1;
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
108 }
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
109 ui_webview_data_free(g->value);
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
110 g->value = ui_webview_data_clone(data);
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
111
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
112 WKWebView *webview = (__bridge WKWebView*)g->obj;
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
113 UiWebViewData *webd = data;
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
114 if(webd->type == WEBVIEW_CONTENT_URL && webd->uri) {
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
115 NSURL *url = [NSURL URLWithString:[[NSString alloc] initWithUTF8String:webd->uri]];
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
116 if(url) {
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
117 NSURLRequest *req = [NSURLRequest requestWithURL:url];
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
118 if(req) {
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
119 [webview loadRequest:req];
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
120 }
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
121 }
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
122 } else if(webd->content) {
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
123 // TODO
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
124 }
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
125
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
126 return 1;
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
127 }
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
128
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
129 void ui_webview_destroy(UiGeneric *g) {
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
130 ui_webview_data_free(g->value);
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
131 g->value = NULL;
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
132 }
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
133
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
134
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
135 void ui_webview_load_url(UiGeneric *g, const char *url) {
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
136 WKWebView *webview = (__bridge WKWebView*)g->obj;
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
137 if(url) {
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
138 NSURL *nsurl = [NSURL URLWithString:[[NSString alloc] initWithUTF8String:url]];
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
139 if(nsurl) {
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
140 NSURLRequest *req = [NSURLRequest requestWithURL:nsurl];
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
141 if(req) {
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
142 [webview loadRequest:req];
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
143 }
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
144 }
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
145 }
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
146 }
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
147
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
148 void ui_webview_load_content(
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
149 UiGeneric *g,
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
150 const char *uri,
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
151 const char *content,
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
152 size_t contentlength,
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
153 const char *mimetype,
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
154 const char *encoding)
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
155 {
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
156
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
157 }
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
158
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
159
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
160 void ui_webview_reload(UiGeneric *g) {
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
161
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
162 }
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
163
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
164 UiBool ui_webview_can_go_back(UiGeneric *g) {
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
165 return FALSE;
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
166 }
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
167
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
168 UiBool ui_webview_can_go_forward(UiGeneric *g) {
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
169 return FALSE;
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
170 }
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
171
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
172 void ui_webview_go_back(UiGeneric *g) {
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
173
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
174 }
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
175
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
176 void ui_webview_go_forward(UiGeneric *g) {
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
177
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
178 }
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
179
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
180 const char * ui_webview_get_uri(UiGeneric *g) {
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
181 return NULL;
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
182 }
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
183
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
184 void ui_webview_enable_javascript(UiGeneric *g, UiBool enable) {
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
185
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
186 }
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
187
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
188 void ui_webview_set_zoom(UiGeneric *g, double zoom) {
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
189
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
190 }
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
191
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
192 double ui_webview_get_zoom(UiGeneric *g) {
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
193 return 0;
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
194 }

mercurial