ui/gtk/button.c

changeset 840
f74250eda598
parent 838
934534c367a4
child 966
e411ed7c5f10
equal deleted inserted replaced
839:f1b5e7dd27b9 840:f74250eda598
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));

mercurial