ui/cocoa/webview.m

Sat, 08 Aug 2026 17:45:08 +0200

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Sat, 08 Aug 2026 17:45:08 +0200
changeset 1228
204677c47576
parent 1227
dd9f17feae3e
permissions
-rw-r--r--

fix wrong button numbers in the dialog window (Cocoa)

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
1227
dd9f17feae3e fix possible crash in webview functions (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 1174
diff changeset
32 static UiWebViewData* create_webview_data(void) {
dd9f17feae3e fix possible crash in webview functions (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 1174
diff changeset
33 UiWebViewData *data = malloc(sizeof(UiWebViewData));
dd9f17feae3e fix possible crash in webview functions (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 1174
diff changeset
34 memset(data, 0, sizeof(UiWebViewData));
dd9f17feae3e fix possible crash in webview functions (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 1174
diff changeset
35 data->javascript = TRUE;
dd9f17feae3e fix possible crash in webview functions (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 1174
diff changeset
36 data->zoom = 1;
dd9f17feae3e fix possible crash in webview functions (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 1174
diff changeset
37 return data;
dd9f17feae3e fix possible crash in webview functions (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 1174
diff changeset
38 }
dd9f17feae3e fix possible crash in webview functions (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 1174
diff changeset
39
875
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
40 UIWIDGET ui_webview_create(UiObject *obj, UiWebviewArgs *args) {
878
862a57990eb8 implement webview zoom setting (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 876
diff changeset
41 UiVar *var = uic_widget_var(obj->ctx, obj->ctx, args->value, args->varname, UI_VAR_GENERIC);
862a57990eb8 implement webview zoom setting (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 876
diff changeset
42
875
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
43 WKWebView *webview = [[WKWebView alloc]init];
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
44
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
45 UiLayout layout = UI_ARGS2LAYOUT(args);
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
46 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
47
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
48 if(var) {
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
49 UiGeneric *value = var->value;
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
50 value->get = ui_webview_get;
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
51 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
52 value->set = ui_webview_set;
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
53 value->destroy = ui_webview_destroy;
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
54 value->obj = (__bridge void*)webview;
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
55 if(value->value) {
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
56 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
57 } else {
1227
dd9f17feae3e fix possible crash in webview functions (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 1174
diff changeset
58 UiWebViewData *data = create_webview_data();
875
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
59 data->webview = (__bridge void*)webview;
1174
8b8da1adef7d fix window memory management (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 878
diff changeset
60 value->value = data;
875
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
61 }
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
62 }
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
63
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
64 return (__bridge void*)webview;
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
65 }
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
66
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
67 UiWebViewData* ui_webview_data_clone(UiWebViewData *data) {
1227
dd9f17feae3e fix possible crash in webview functions (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 1174
diff changeset
68 UiWebViewData *newdata = create_webview_data();
875
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
69
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
70 if(data) {
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
71 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
72 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
73 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
74 newdata->type = data->type;
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
75 newdata->javascript = data->javascript;
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
76 newdata->zoom = data->zoom;
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
77 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
78 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
79 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
80 newdata->content[data->contentlength] = 0;
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
81 newdata->contentlength = data->contentlength;
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 }
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
84
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
85 return newdata;
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
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
88 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
89 if(!data) {
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
90 return;
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
91 }
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
92 free(data->uri);
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
93 free(data->mimetype);
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
94 free(data->encoding);
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
95 free(data->content);
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
96 free(data);
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
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
99 void* ui_webview_get(UiGeneric *g) {
876
2131c806440d implement ui_webview_load_content (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 875
diff changeset
100 UiWebViewData *data = g->value;
2131c806440d implement ui_webview_load_content (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 875
diff changeset
101 WKWebView *webview = (__bridge WKWebView*)g->obj;
2131c806440d implement ui_webview_load_content (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 875
diff changeset
102
1227
dd9f17feae3e fix possible crash in webview functions (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 1174
diff changeset
103 if(data == NULL) {
dd9f17feae3e fix possible crash in webview functions (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 1174
diff changeset
104 data = create_webview_data();
dd9f17feae3e fix possible crash in webview functions (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 1174
diff changeset
105 data->webview = g->obj;
dd9f17feae3e fix possible crash in webview functions (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 1174
diff changeset
106 g->value = data;
dd9f17feae3e fix possible crash in webview functions (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 1174
diff changeset
107 }
dd9f17feae3e fix possible crash in webview functions (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 1174
diff changeset
108
876
2131c806440d implement ui_webview_load_content (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 875
diff changeset
109 if(data->type == WEBVIEW_CONTENT_URL) {
2131c806440d implement ui_webview_load_content (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 875
diff changeset
110 (void)ui_webview_get_uri(g); // this updates data->uri
2131c806440d implement ui_webview_load_content (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 875
diff changeset
111 }
878
862a57990eb8 implement webview zoom setting (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 876
diff changeset
112 data->zoom = webview.pageZoom;
876
2131c806440d implement ui_webview_load_content (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 875
diff changeset
113
875
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
114 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
115 }
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
116
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
117 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
118 return UI_WEBVIEW_OBJECT_TYPE;
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
119 }
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 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
122 if(!data || !type) {
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
123 return 1;
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 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
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 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
129 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
130
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
131 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
132 UiWebViewData *webd = data;
878
862a57990eb8 implement webview zoom setting (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 876
diff changeset
133 if(webd->type == WEBVIEW_CONTENT_URL) {
862a57990eb8 implement webview zoom setting (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 876
diff changeset
134 const char *uri = webd->uri ? webd->uri : "about:blank";
862a57990eb8 implement webview zoom setting (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 876
diff changeset
135 NSURL *url = [NSURL URLWithString:[[NSString alloc] initWithUTF8String:uri]];
875
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
136 if(url) {
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
137 NSURLRequest *req = [NSURLRequest requestWithURL:url];
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
138 if(req) {
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
139 [webview loadRequest:req];
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
140 }
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
141 }
878
862a57990eb8 implement webview zoom setting (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 876
diff changeset
142 } else {
862a57990eb8 implement webview zoom setting (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 876
diff changeset
143 NSString *mimetype = [[NSString alloc]initWithUTF8String: webd->mimetype ? webd->mimetype : "text/plain"];
862a57990eb8 implement webview zoom setting (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 876
diff changeset
144 NSString *encoding = [[NSString alloc]initWithUTF8String: webd->encoding ? webd->encoding : "UTF-8"];
862a57990eb8 implement webview zoom setting (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 876
diff changeset
145 NSString *urlStr = [[NSString alloc]initWithUTF8String: webd->uri ? webd->uri : "file:///"];
862a57990eb8 implement webview zoom setting (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 876
diff changeset
146 NSURL *url = [NSURL URLWithString:urlStr];
862a57990eb8 implement webview zoom setting (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 876
diff changeset
147 NSData *content = [NSData dataWithBytes:webd->content length:webd->contentlength];
862a57990eb8 implement webview zoom setting (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 876
diff changeset
148 if(!url) {
862a57990eb8 implement webview zoom setting (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 876
diff changeset
149 url = [NSURL URLWithString:@"about:blank"];
862a57990eb8 implement webview zoom setting (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 876
diff changeset
150 }
862a57990eb8 implement webview zoom setting (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 876
diff changeset
151 [webview loadData:content MIMEType:mimetype characterEncodingName:encoding baseURL:url];
875
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
152 }
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
153
878
862a57990eb8 implement webview zoom setting (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 876
diff changeset
154 webview.pageZoom = webd->zoom;
862a57990eb8 implement webview zoom setting (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 876
diff changeset
155
875
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
156 return 1;
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 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
160 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
161 g->value = NULL;
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
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
165 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
166 WKWebView *webview = (__bridge WKWebView*)g->obj;
876
2131c806440d implement ui_webview_load_content (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 875
diff changeset
167 UiWebViewData *data = g->value;
1227
dd9f17feae3e fix possible crash in webview functions (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 1174
diff changeset
168
dd9f17feae3e fix possible crash in webview functions (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 1174
diff changeset
169 if(data == NULL) {
dd9f17feae3e fix possible crash in webview functions (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 1174
diff changeset
170 data = create_webview_data();
dd9f17feae3e fix possible crash in webview functions (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 1174
diff changeset
171 data->webview = g->obj;
dd9f17feae3e fix possible crash in webview functions (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 1174
diff changeset
172 g->value = data;
dd9f17feae3e fix possible crash in webview functions (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 1174
diff changeset
173 }
dd9f17feae3e fix possible crash in webview functions (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 1174
diff changeset
174
876
2131c806440d implement ui_webview_load_content (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 875
diff changeset
175 data->type = WEBVIEW_CONTENT_URL;
2131c806440d implement ui_webview_load_content (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 875
diff changeset
176
2131c806440d implement ui_webview_load_content (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 875
diff changeset
177 if(!url) {
878
862a57990eb8 implement webview zoom setting (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 876
diff changeset
178 url = "about:blank";
876
2131c806440d implement ui_webview_load_content (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 875
diff changeset
179 }
2131c806440d implement ui_webview_load_content (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 875
diff changeset
180
2131c806440d implement ui_webview_load_content (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 875
diff changeset
181 NSURL *nsurl = [NSURL URLWithString:[[NSString alloc] initWithUTF8String:url]];
2131c806440d implement ui_webview_load_content (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 875
diff changeset
182 if(nsurl) {
2131c806440d implement ui_webview_load_content (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 875
diff changeset
183 NSURLRequest *req = [NSURLRequest requestWithURL:nsurl];
2131c806440d implement ui_webview_load_content (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 875
diff changeset
184 if(req) {
2131c806440d implement ui_webview_load_content (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 875
diff changeset
185 [webview loadRequest:req];
875
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 }
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 void ui_webview_load_content(
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
191 UiGeneric *g,
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
192 const char *uri,
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
193 const char *content,
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
194 size_t contentlength,
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
195 const char *mimetype,
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
196 const char *encoding)
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
197 {
876
2131c806440d implement ui_webview_load_content (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 875
diff changeset
198 UiWebViewData *data = g->value;
2131c806440d implement ui_webview_load_content (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 875
diff changeset
199 WKWebView *webview = (__bridge WKWebView*)g->obj;
875
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
200
1227
dd9f17feae3e fix possible crash in webview functions (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 1174
diff changeset
201 if(data == NULL) {
dd9f17feae3e fix possible crash in webview functions (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 1174
diff changeset
202 data = create_webview_data();
dd9f17feae3e fix possible crash in webview functions (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 1174
diff changeset
203 data->webview = g->obj;
dd9f17feae3e fix possible crash in webview functions (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 1174
diff changeset
204 g->value = data;
dd9f17feae3e fix possible crash in webview functions (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 1174
diff changeset
205 }
dd9f17feae3e fix possible crash in webview functions (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 1174
diff changeset
206
876
2131c806440d implement ui_webview_load_content (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 875
diff changeset
207 data->type = WEBVIEW_CONTENT_CONTENT;
2131c806440d implement ui_webview_load_content (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 875
diff changeset
208
2131c806440d implement ui_webview_load_content (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 875
diff changeset
209 free(data->uri);
2131c806440d implement ui_webview_load_content (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 875
diff changeset
210 data->uri = NULL;
2131c806440d implement ui_webview_load_content (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 875
diff changeset
211 free(data->mimetype);
2131c806440d implement ui_webview_load_content (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 875
diff changeset
212 free(data->encoding);
2131c806440d implement ui_webview_load_content (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 875
diff changeset
213 free(data->content);
2131c806440d implement ui_webview_load_content (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 875
diff changeset
214 data->type = WEBVIEW_CONTENT_URL;
2131c806440d implement ui_webview_load_content (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 875
diff changeset
215
2131c806440d implement ui_webview_load_content (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 875
diff changeset
216 data->content = malloc(contentlength+1);
2131c806440d implement ui_webview_load_content (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 875
diff changeset
217 memcpy(data->content, content, contentlength);
2131c806440d implement ui_webview_load_content (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 875
diff changeset
218 data->content[contentlength] = 0;
2131c806440d implement ui_webview_load_content (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 875
diff changeset
219
2131c806440d implement ui_webview_load_content (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 875
diff changeset
220 if(!mimetype) {
2131c806440d implement ui_webview_load_content (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 875
diff changeset
221 mimetype = "text/plain";
2131c806440d implement ui_webview_load_content (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 875
diff changeset
222 }
2131c806440d implement ui_webview_load_content (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 875
diff changeset
223 if(!encoding) {
2131c806440d implement ui_webview_load_content (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 875
diff changeset
224 encoding = "UTF-8";
2131c806440d implement ui_webview_load_content (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 875
diff changeset
225 }
2131c806440d implement ui_webview_load_content (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 875
diff changeset
226
2131c806440d implement ui_webview_load_content (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 875
diff changeset
227 data->mimetype = strdup(mimetype);
2131c806440d implement ui_webview_load_content (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 875
diff changeset
228 data->encoding = strdup(encoding);
2131c806440d implement ui_webview_load_content (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 875
diff changeset
229
2131c806440d implement ui_webview_load_content (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 875
diff changeset
230 NSString *mtype = [[NSString alloc]initWithUTF8String:mimetype];
2131c806440d implement ui_webview_load_content (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 875
diff changeset
231 NSString *enc = [[NSString alloc]initWithUTF8String:encoding];
2131c806440d implement ui_webview_load_content (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 875
diff changeset
232 NSData *ct = [NSData dataWithBytes:content length:contentlength];
2131c806440d implement ui_webview_load_content (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 875
diff changeset
233 NSURL *url;
2131c806440d implement ui_webview_load_content (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 875
diff changeset
234 if(uri) {
2131c806440d implement ui_webview_load_content (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 875
diff changeset
235 NSString *uriStr = [[NSString alloc]initWithUTF8String:uri];
2131c806440d implement ui_webview_load_content (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 875
diff changeset
236 url = [NSURL URLWithString:uriStr];
2131c806440d implement ui_webview_load_content (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 875
diff changeset
237 } else {
2131c806440d implement ui_webview_load_content (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 875
diff changeset
238 url = [NSURL URLWithString:@"file:///"];
2131c806440d implement ui_webview_load_content (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 875
diff changeset
239 }
2131c806440d implement ui_webview_load_content (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 875
diff changeset
240 [webview loadData:ct MIMEType:mtype characterEncodingName:enc baseURL:url];
875
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
241 }
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
242
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
243
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
244 void ui_webview_reload(UiGeneric *g) {
876
2131c806440d implement ui_webview_load_content (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 875
diff changeset
245 WKWebView *webview = (__bridge WKWebView*)g->obj;
2131c806440d implement ui_webview_load_content (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 875
diff changeset
246 [webview reload];
875
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
247 }
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
248
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
249 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
250 return FALSE;
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
251 }
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
252
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
253 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
254 return FALSE;
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
255 }
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
256
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
257 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
258
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
259 }
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
260
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
261 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
262
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
263 }
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
264
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
265 const char * ui_webview_get_uri(UiGeneric *g) {
876
2131c806440d implement ui_webview_load_content (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 875
diff changeset
266 UiWebViewData *data = g->value;
2131c806440d implement ui_webview_load_content (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 875
diff changeset
267 WKWebView *webview = (__bridge WKWebView*)g->obj;
2131c806440d implement ui_webview_load_content (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 875
diff changeset
268
2131c806440d implement ui_webview_load_content (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 875
diff changeset
269 free(data->uri);
2131c806440d implement ui_webview_load_content (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 875
diff changeset
270 data->uri = NULL;
2131c806440d implement ui_webview_load_content (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 875
diff changeset
271
2131c806440d implement ui_webview_load_content (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 875
diff changeset
272 NSURL *url = webview.URL;
2131c806440d implement ui_webview_load_content (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 875
diff changeset
273 if(url) {
2131c806440d implement ui_webview_load_content (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 875
diff changeset
274 NSString *s = [url absoluteString];
2131c806440d implement ui_webview_load_content (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 875
diff changeset
275 if(s) {
2131c806440d implement ui_webview_load_content (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 875
diff changeset
276 data->uri = strdup(s.UTF8String);
2131c806440d implement ui_webview_load_content (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 875
diff changeset
277 }
2131c806440d implement ui_webview_load_content (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 875
diff changeset
278 }
2131c806440d implement ui_webview_load_content (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 875
diff changeset
279 return data->uri;
875
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
280 }
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
281
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
282 void ui_webview_enable_javascript(UiGeneric *g, UiBool enable) {
878
862a57990eb8 implement webview zoom setting (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 876
diff changeset
283 // unsupported
875
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
284 }
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
285
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
286 void ui_webview_set_zoom(UiGeneric *g, double zoom) {
878
862a57990eb8 implement webview zoom setting (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 876
diff changeset
287 WKWebView *webview = (__bridge WKWebView*)g->obj;
862a57990eb8 implement webview zoom setting (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 876
diff changeset
288 webview.pageZoom = zoom;
875
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
289 }
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
290
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
291 double ui_webview_get_zoom(UiGeneric *g) {
878
862a57990eb8 implement webview zoom setting (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 876
diff changeset
292 WKWebView *webview = (__bridge WKWebView*)g->obj;
862a57990eb8 implement webview zoom setting (Cocoa)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 876
diff changeset
293 return webview.pageZoom;
875
0575ca45f1bb add cleanup/destroy handler for UiString, UiText and UiGeneric
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
294 }

mercurial