diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/xwidget.c | 103 |
1 files changed, 41 insertions, 62 deletions
diff --git a/src/xwidget.c b/src/xwidget.c index c6714ad40a5..d169069c99d 100644 --- a/src/xwidget.c +++ b/src/xwidget.c | |||
| @@ -238,11 +238,6 @@ DEFUN ("make-xwidget", Fmake_xwidget, Smake_xwidget, 7, 7, 0, | |||
| 238 | xw->widget_osr = xwgir_create( SDATA(Fcar(Fcdr(Fget(xw->type, Qcxwgir_class)))), | 238 | xw->widget_osr = xwgir_create( SDATA(Fcar(Fcdr(Fget(xw->type, Qcxwgir_class)))), |
| 239 | SDATA(Fcar(Fget(xw->type, Qcxwgir_class)))); | 239 | SDATA(Fcar(Fget(xw->type, Qcxwgir_class)))); |
| 240 | 240 | ||
| 241 | ///debug xwgir | ||
| 242 | /* gdk_offscreen_window_set_embedder ( gtk_widget_get_window (xw->widget_osr), */ | ||
| 243 | /* gtk_widget_get_window (GTK_WIDGET (xw->widgetwindow_osr)) */ | ||
| 244 | /* ); */ | ||
| 245 | /// | ||
| 246 | gtk_widget_set_size_request (GTK_WIDGET (xw->widget_osr), xw->width, xw->height); | 241 | gtk_widget_set_size_request (GTK_WIDGET (xw->widget_osr), xw->width, xw->height); |
| 247 | gtk_container_add (xw->widgetwindow_osr, xw->widget_osr); | 242 | gtk_container_add (xw->widgetwindow_osr, xw->widget_osr); |
| 248 | 243 | ||
| @@ -254,9 +249,6 @@ DEFUN ("make-xwidget", Fmake_xwidget, Smake_xwidget, 7, 7, 0, | |||
| 254 | /* signals */ | 249 | /* signals */ |
| 255 | g_signal_connect (G_OBJECT ( xw->widgetwindow_osr), "damage-event", G_CALLBACK (xwidget_osr_damage_event_callback), NULL); | 250 | g_signal_connect (G_OBJECT ( xw->widgetwindow_osr), "damage-event", G_CALLBACK (xwidget_osr_damage_event_callback), NULL); |
| 256 | 251 | ||
| 257 | //TODO these were just a test hack | ||
| 258 | /* g_signal_connect (G_OBJECT ( xw->widget_osr), "key-press-event", G_CALLBACK (webkit_osr_key_event_callback), NULL); */ | ||
| 259 | /* g_signal_connect (G_OBJECT ( xw->widget_osr), "key-release-event", G_CALLBACK (webkit_osr_key_event_callback), NULL); */ | ||
| 260 | 252 | ||
| 261 | if (EQ(xw->type, Qwebkit_osr)){ | 253 | if (EQ(xw->type, Qwebkit_osr)){ |
| 262 | g_signal_connect (G_OBJECT ( xw->widget_osr), | 254 | g_signal_connect (G_OBJECT ( xw->widget_osr), |
| @@ -303,56 +295,6 @@ DEFUN ("make-xwidget", Fmake_xwidget, Smake_xwidget, 7, 7, 0, | |||
| 303 | } | 295 | } |
| 304 | #endif | 296 | #endif |
| 305 | 297 | ||
| 306 | /* if (EQ(xw->type, Qsocket_osr)){ */ | ||
| 307 | /* printf("init socket osr\n"); */ | ||
| 308 | /* block_input(); */ | ||
| 309 | /* xw->widgetwindow_osr = GTK_CONTAINER (gtk_offscreen_window_new ()); */ | ||
| 310 | /* gtk_window_resize( GTK_WINDOW(xw->widgetwindow_osr), xw->width, xw->height); */ | ||
| 311 | |||
| 312 | /* //////////////////// */ | ||
| 313 | /* //xw->widget_osr = webkit_web_view_new(); */ | ||
| 314 | /* xw->widget_osr = gtk_socket_new(); */ | ||
| 315 | /* //g_signal_connect_after(xv->widget, "plug-added", G_CALLBACK(xwidget_plug_added), "plug added"); */ | ||
| 316 | /* //g_signal_connect_after(xv->widget, "plug-removed", G_CALLBACK(xwidget_plug_removed), "plug removed"); */ | ||
| 317 | /* /////////////////// */ | ||
| 318 | |||
| 319 | /* gtk_widget_set_size_request (GTK_WIDGET (xw->widget_osr), xw->width, xw->height); */ | ||
| 320 | /* gtk_container_add (xw->widgetwindow_osr, xw->widget_osr); */ | ||
| 321 | |||
| 322 | /* gtk_widget_show_all (GTK_WIDGET (xw->widgetwindow_osr)); */ | ||
| 323 | |||
| 324 | /* /\* store some xwidget data in the gtk widgets for convenient retrieval in the event handlers. *\/ */ | ||
| 325 | /* g_object_set_data (G_OBJECT (xw->widget_osr), XG_XWIDGET, (gpointer) (xw)); */ | ||
| 326 | /* g_object_set_data (G_OBJECT (xw->widgetwindow_osr), XG_XWIDGET, (gpointer) (xw)); */ | ||
| 327 | /* g_signal_connect (G_OBJECT ( xw->widgetwindow_osr), "damage-event", G_CALLBACK (xwidget_osr_damage_event_callback), NULL); */ | ||
| 328 | |||
| 329 | /* //webkit_web_view_load_uri(WEBKIT_WEB_VIEW(xw->widget_osr), "http://www.fsf.org"); */ | ||
| 330 | /* unblock_input(); */ | ||
| 331 | |||
| 332 | /* } */ | ||
| 333 | |||
| 334 | |||
| 335 | /* ////////////////////////////// */ | ||
| 336 | /* gtk_widget_set_size_request (GTK_WIDGET (xw->widget_osr), xw->width, xw->height); */ | ||
| 337 | /* gtk_container_add (xw->widgetwindow_osr, xw->widget_osr); */ | ||
| 338 | |||
| 339 | /* gtk_widget_show_all (GTK_WIDGET (xw->widgetwindow_osr)); */ | ||
| 340 | |||
| 341 | /* /\* store some xwidget data in the gtk widgets for convenient retrieval in the event handlers. *\/ */ | ||
| 342 | /* g_object_set_data (G_OBJECT (xw->widget_osr), XG_XWIDGET, (gpointer) (xw)); */ | ||
| 343 | /* g_object_set_data (G_OBJECT (xw->widgetwindow_osr), XG_XWIDGET, (gpointer) (xw)); */ | ||
| 344 | /* /\* signals *\/ */ | ||
| 345 | /* g_signal_connect (G_OBJECT ( xw->widgetwindow_osr), "damage-event", G_CALLBACK (xwidget_osr_damage_event_callback), NULL); */ | ||
| 346 | /* g_signal_connect (G_OBJECT ( xw->widget_osr), "button-press-event", G_CALLBACK (xwgir_event_callback), xw); */ | ||
| 347 | |||
| 348 | |||
| 349 | /* unblock_input(); */ | ||
| 350 | /* } */ | ||
| 351 | |||
| 352 | //////////////////////////////////////////////////////// | ||
| 353 | |||
| 354 | |||
| 355 | |||
| 356 | UNGCPRO; | 298 | UNGCPRO; |
| 357 | return val; | 299 | return val; |
| 358 | } | 300 | } |
| @@ -522,7 +464,7 @@ webkit_osr_key_event_callback (GtkWidget *widget, GdkEventKey *event, gpointer d | |||
| 522 | 464 | ||
| 523 | 465 | ||
| 524 | void | 466 | void |
| 525 | store_xwidget_event_string(struct xwidget* xw, char* eventname,char* eventstr) | 467 | store_xwidget_event_string(struct xwidget* xw, char* eventname, const char* eventstr) |
| 526 | { | 468 | { |
| 527 | //refactor attempt | 469 | //refactor attempt |
| 528 | struct input_event event; | 470 | struct input_event event; |
| @@ -816,7 +758,43 @@ xwgir_convert_lisp_to_gir_arg(GIArgument* giarg, | |||
| 816 | return 0; | 758 | return 0; |
| 817 | } | 759 | } |
| 818 | 760 | ||
| 819 | DEFUN ("xwgir-call-method", Fxwgir_call_method, Sxwgir_call_method, 3, 3, 0, | 761 | #if 0 |
| 762 | void | ||
| 763 | refactor_attempt(){ | ||
| 764 | //this methhod should be called from xwgir-xwidget-call-method and from xwgir xwidget construction | ||
| 765 | char* class = SDATA(Fcar(Fcdr(Fget(xw->type, Qcxwgir_class)))); | ||
| 766 | |||
| 767 | GIObjectInfo* obj_info = g_irepository_find_by_name(girepository, namespace, class); | ||
| 768 | GIFunctionInfo* f_info = g_object_info_find_method (obj_info, SDATA(method)); | ||
| 769 | |||
| 770 | //loop over args, convert from lisp to primitive type, given arg introspection data | ||
| 771 | //TODO g_callable_info_get_n_args(f_info) should match | ||
| 772 | int argscount = XFASTINT(Flength(arguments)); | ||
| 773 | if(argscount != g_callable_info_get_n_args(f_info)){ | ||
| 774 | printf("xwgir call method arg count doesn match! \n"); | ||
| 775 | return Qnil; | ||
| 776 | } | ||
| 777 | int i; | ||
| 778 | for (i = 1; i < argscount + 1; ++i) | ||
| 779 | { | ||
| 780 | xwgir_convert_lisp_to_gir_arg(&in_args[i], g_callable_info_get_arg(f_info, i - 1), Fnth(i - 1, arguments)); | ||
| 781 | } | ||
| 782 | |||
| 783 | in_args[0].v_pointer = widget; | ||
| 784 | if(g_function_info_invoke(f_info, | ||
| 785 | in_args, argscount + 1, | ||
| 786 | NULL, 0, | ||
| 787 | &return_value, | ||
| 788 | &error)) { | ||
| 789 | //g_error("ERROR: %s\n", error->message); | ||
| 790 | printf("invokation error\n"); | ||
| 791 | return Qnil; | ||
| 792 | } | ||
| 793 | return Qt; | ||
| 794 | } | ||
| 795 | #endif | ||
| 796 | |||
| 797 | DEFUN ("xwgir-xwidget-call-method", Fxwgir_xwidget_call_method, Sxwgir_xwidget_call_method, 3, 3, 0, | ||
| 820 | doc: /* call xwidget object method.*/) | 798 | doc: /* call xwidget object method.*/) |
| 821 | (Lisp_Object xwidget, Lisp_Object method, Lisp_Object arguments) | 799 | (Lisp_Object xwidget, Lisp_Object method, Lisp_Object arguments) |
| 822 | { | 800 | { |
| @@ -1406,7 +1384,8 @@ DEFUN ("xwidget-resize", Fxwidget_resize, Sxwidget_resize, 3, 3, 0, doc: | |||
| 1406 | gtk_widget_set_size_request (GTK_WIDGET (xw->widget_osr), xw->width, xw->height); //minimum size | 1384 | gtk_widget_set_size_request (GTK_WIDGET (xw->widget_osr), xw->width, xw->height); //minimum size |
| 1407 | //gtk_window_resize( GTK_WINDOW(xw->widget_osr), xw->width, xw->height); | 1385 | //gtk_window_resize( GTK_WINDOW(xw->widget_osr), xw->width, xw->height); |
| 1408 | gtk_window_resize( GTK_WINDOW(xw->widgetwindow_osr), xw->width, xw->height); | 1386 | gtk_window_resize( GTK_WINDOW(xw->widgetwindow_osr), xw->width, xw->height); |
| 1409 | gtk_container_resize_children ( GTK_WINDOW(xw->widgetwindow_osr)); | 1387 | //gtk_container_resize_children ( GTK_WINDOW(xw->widgetwindow_osr)); |
| 1388 | gtk_container_resize_children ( GTK_CONTAINER(xw->widgetwindow_osr)); | ||
| 1410 | 1389 | ||
| 1411 | } | 1390 | } |
| 1412 | 1391 | ||
| @@ -1620,7 +1599,7 @@ syms_of_xwidget (void) | |||
| 1620 | DEFSYM (Qwebkit_osr ,"webkit-osr"); | 1599 | DEFSYM (Qwebkit_osr ,"webkit-osr"); |
| 1621 | #endif | 1600 | #endif |
| 1622 | 1601 | ||
| 1623 | defsubr (&Sxwgir_call_method ); | 1602 | defsubr (&Sxwgir_xwidget_call_method ); |
| 1624 | defsubr (&Sxwgir_require_namespace); | 1603 | defsubr (&Sxwgir_require_namespace); |
| 1625 | defsubr (&Sxwidget_size_request ); | 1604 | defsubr (&Sxwidget_size_request ); |
| 1626 | defsubr (&Sxwidget_delete_zombies); | 1605 | defsubr (&Sxwidget_delete_zombies); |