aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/xwidget.c103
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
524void 466void
525store_xwidget_event_string(struct xwidget* xw, char* eventname,char* eventstr) 467store_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
819DEFUN ("xwgir-call-method", Fxwgir_call_method, Sxwgir_call_method, 3, 3, 0, 761#if 0
762void
763refactor_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
797DEFUN ("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);