| 803 const char *uri = linkbutton_get_uri(link); |
803 const char *uri = linkbutton_get_uri(link); |
| 804 gboolean visited = linkbutton_get_visited(link); |
804 gboolean visited = linkbutton_get_visited(link); |
| 805 return create_linkbutton_jsonvalue(label, uri, TRUE, visited, TRUE); |
805 return create_linkbutton_jsonvalue(label, uri, TRUE, visited, TRUE); |
| 806 } |
806 } |
| 807 |
807 |
| 808 static void linkbutton_clicked(GtkWidget *widget, UiLinkButton *data) { |
808 static void linkbutton_callback(GtkWidget *widget, UiLinkButton *data) { |
| 809 if(data->onclick) { |
809 if(data->onclick) { |
| 810 UiEvent e; |
810 UiEvent e; |
| 811 e.obj = data->obj; |
811 e.obj = data->obj; |
| 812 e.document = e.obj->ctx->document; |
812 e.document = e.obj->ctx->document; |
| 813 e.window = e.obj->window; |
813 e.window = e.obj->window; |
| 817 e.set = ui_get_setop(); |
817 e.set = ui_get_setop(); |
| 818 data->onclick(&e, data->onclickdata); |
818 data->onclick(&e, data->onclickdata); |
| 819 } |
819 } |
| 820 } |
820 } |
| 821 |
821 |
| |
822 static void linkbutton_clicked(GtkWidget *widget, UiLinkButton *data) { |
| |
823 linkbutton_callback(widget, data); |
| |
824 if(data->link) { |
| |
825 #if GTK_CHECK_VERSION(4, 0, 0) |
| |
826 GtkUriLauncher *launcher = gtk_uri_launcher_new (data->link); |
| |
827 gtk_uri_launcher_launch (launcher, NULL, NULL, NULL, NULL); |
| |
828 g_object_unref (launcher); |
| |
829 #elif GTK_CHECK_VERSION(3, 22, 0) |
| |
830 GError *error = NULL; |
| |
831 gtk_show_uri_on_window(NULL, data->link, GDK_CURRENT_TIME, &error); |
| |
832 #elif |
| |
833 // TODO: call xdg-open |
| |
834 #endif |
| |
835 } |
| |
836 } |
| |
837 |
| 822 static gboolean linkbutton_activate_link(GtkLinkButton *self, UiLinkButton *data) { |
838 static gboolean linkbutton_activate_link(GtkLinkButton *self, UiLinkButton *data) { |
| 823 linkbutton_clicked(data->widget, data); |
839 linkbutton_callback(data->widget, data); |
| 824 return data->nofollow; |
840 return data->nofollow; |
| 825 } |
841 } |
| 826 |
842 |
| 827 UIWIDGET ui_linkbutton_create(UiObject *obj, UiLinkButtonArgs *args) { |
843 UIWIDGET ui_linkbutton_create(UiObject *obj, UiLinkButtonArgs *args) { |
| 828 UiLinkButton *data = malloc(sizeof(UiLinkButton)); |
844 UiLinkButton *data = malloc(sizeof(UiLinkButton)); |