aboutsummaryrefslogtreecommitdiffstats
path: root/src/xwidget.c
diff options
context:
space:
mode:
authorJoakim Verona2011-07-25 10:54:22 +0200
committerJoakim Verona2011-07-25 10:54:22 +0200
commit37d6e227b2e4460b36363e42a3de45c082233c74 (patch)
tree99ce5c28b62bd068319ab2c24a97adf764c9a2e2 /src/xwidget.c
parentb60646c64ead035bff3e5ba925f768f36964f661 (diff)
parent0f0a88b94cce778a7903196b07a0d70657fb4dc0 (diff)
downloademacs-37d6e227b2e4460b36363e42a3de45c082233c74.tar.gz
emacs-37d6e227b2e4460b36363e42a3de45c082233c74.zip
upstream merge. cleanup
Diffstat (limited to 'src/xwidget.c')
-rw-r--r--src/xwidget.c59
1 files changed, 4 insertions, 55 deletions
diff --git a/src/xwidget.c b/src/xwidget.c
index 6732fad02d5..2186d429a32 100644
--- a/src/xwidget.c
+++ b/src/xwidget.c
@@ -256,19 +256,9 @@ send_xembed_ready_event (struct xwidget* xw, int xembedid)
256 256
257} 257}
258 258
259int xwidget_query_composition_called = 0;
260int hasNamePixmap = 0;
261
262
263
264
265
266
267
268void 259void
269xwidget_show_view (struct xwidget_view *xv) 260xwidget_show_view (struct xwidget_view *xv)
270{ 261{
271 //printf("xwidget %d shown\n",xw->id);
272 xv->hidden = 0; 262 xv->hidden = 0;
273 gtk_widget_show(GTK_WIDGET(xv->widgetwindow)); 263 gtk_widget_show(GTK_WIDGET(xv->widgetwindow));
274 gtk_fixed_move (GTK_FIXED (xv->emacswindow), GTK_WIDGET (xv->widgetwindow), xv->x + xv->clip_left, xv->y + xv->clip_top); //TODO refactor 264 gtk_fixed_move (GTK_FIXED (xv->emacswindow), GTK_WIDGET (xv->widgetwindow), xv->x + xv->clip_left, xv->y + xv->clip_top); //TODO refactor
@@ -279,7 +269,6 @@ xwidget_show_view (struct xwidget_view *xv)
279void 269void
280xwidget_hide_view (struct xwidget_view *xv) 270xwidget_hide_view (struct xwidget_view *xv)
281{ 271{
282 //printf("xwidget %d hidden\n",xw->id);
283 xv->hidden = 1; 272 xv->hidden = 1;
284 //gtk_widget_hide(GTK_WIDGET(xw->widgetwindow)); 273 //gtk_widget_hide(GTK_WIDGET(xw->widgetwindow));
285 gtk_fixed_move (GTK_FIXED (xv->emacswindow), GTK_WIDGET (xv->widgetwindow), 274 gtk_fixed_move (GTK_FIXED (xv->emacswindow), GTK_WIDGET (xv->widgetwindow),
@@ -432,10 +421,6 @@ xwidget_init_view (
432 xv->widget = gtk_toggle_button_new_with_label (XSTRING(xww->title)->data); 421 xv->widget = gtk_toggle_button_new_with_label (XSTRING(xww->title)->data);
433 } else if (EQ(xww->type, Qsocket)) { 422 } else if (EQ(xww->type, Qsocket)) {
434 xv->widget = gtk_socket_new (); 423 xv->widget = gtk_socket_new ();
435 //gtk_widget_set_app_paintable (xw->widget, TRUE); //workaround for composited sockets
436
437 //gdk_color_parse("blue",&color); //the blue color never seems to show up. something else draws a grey bg
438 //gtk_widget_modify_bg(xv->widget, GTK_STATE_NORMAL, &color);
439 g_signal_connect_after(xv->widget, "plug-added", G_CALLBACK(xwidget_plug_added), "plug added"); 424 g_signal_connect_after(xv->widget, "plug-added", G_CALLBACK(xwidget_plug_added), "plug added");
440 g_signal_connect_after(xv->widget, "plug-removed", G_CALLBACK(xwidget_plug_removed), "plug removed"); 425 g_signal_connect_after(xv->widget, "plug-removed", G_CALLBACK(xwidget_plug_removed), "plug removed");
441 } else if (EQ(xww->type, Qslider)) { 426 } else if (EQ(xww->type, Qslider)) {
@@ -518,39 +503,18 @@ xwidget_init_view (
518 //make container widget 1st, and put the actual widget inside the container 503 //make container widget 1st, and put the actual widget inside the container
519 //later, drawing should crop container window if necessary to handle case where xwidget 504 //later, drawing should crop container window if necessary to handle case where xwidget
520 //is partially obscured by other emacs windows 505 //is partially obscured by other emacs windows
506 //other containers than gtk_fixed where explored, but gtk_fixed had the most predictable behaviour so far.
521 xv->emacswindow = GTK_CONTAINER (FRAME_GTK_WIDGET (s->f)); 507 xv->emacswindow = GTK_CONTAINER (FRAME_GTK_WIDGET (s->f));
522 //xw->widgetwindow = GTK_CONTAINER (gtk_layout_new (NULL, NULL)); 508 xv->widgetwindow = GTK_CONTAINER (gtk_fixed_new ());
523 //xw->widgetwindow = GTK_CONTAINER (gtk_offscreen_window_new ());
524
525 xv->widgetwindow = GTK_CONTAINER (gtk_fixed_new ()); //works well for clipping on gtk2 not gtk3
526 //xv->widgetwindow = GTK_CONTAINER (gtk_event_box_new ()); //doesnt help clipping gtk3
527 //xv->widgetwindow = GTK_CONTAINER (gtk_scrolled_window_new (NULL, NULL)); //clips in gtk3
528 //xv->widgetwindow = GTK_CONTAINER (gtk_viewport_new (NULL, NULL));
529
530
531 /* GtkAllocation a; */
532 /* a.x=0; a.y=0; a.width=xww->width; a.height=xww->height; */
533 /* gtk_widget_set_allocation (GTK_WIDGET (xv->widget), &a); */
534
535 gtk_widget_set_has_window(GTK_WIDGET ( xv->widgetwindow), TRUE); 509 gtk_widget_set_has_window(GTK_WIDGET ( xv->widgetwindow), TRUE);
536 //on GTK2 if gtk_fixed doesnt have a window it will surprisingly not honor
537 //setsize so that children gets clipped later. the documentation is
538 //not consistent regarding if its legal to call this method.
539
540 //on GTK3 the call isnt necessary except for windowless widgets such as the drawarea used for the webkit views
541
542
543 //gtk_layout_set_size (GTK_LAYOUT (xw->widgetwindow), xw->width, xw->height);
544 gtk_container_add (xv->widgetwindow, xv->widget); 510 gtk_container_add (xv->widgetwindow, xv->widget);
545 511
546 //gtk_scrolled_window_add_with_viewport (xv->widgetwindow, xv->widget); // when using scrollw
547
548 //store some xwidget data in the gtk widgets 512 //store some xwidget data in the gtk widgets
549 g_object_set_data (G_OBJECT (xv->widget), XG_FRAME_DATA, (gpointer) (s->f)); //the emacs frame 513 g_object_set_data (G_OBJECT (xv->widget), XG_FRAME_DATA, (gpointer) (s->f)); //the emacs frame
550 g_object_set_data (G_OBJECT (xv->widget), XG_XWIDGET, (gpointer) (xww)); //the xwidget 514 g_object_set_data (G_OBJECT (xv->widget), XG_XWIDGET, (gpointer) (xww)); //the xwidget
551 g_object_set_data (G_OBJECT (xv->widget), XG_XWIDGET_VIEW, (gpointer) (xv)); //the xwidget 515 g_object_set_data (G_OBJECT (xv->widget), XG_XWIDGET_VIEW, (gpointer) (xv)); //the xwidget
552 g_object_set_data (G_OBJECT (xv->widgetwindow), XG_XWIDGET, (gpointer) (xww)); //the xwidget 516 g_object_set_data (G_OBJECT (xv->widgetwindow), XG_XWIDGET, (gpointer) (xww)); //the xwidget window
553 g_object_set_data (G_OBJECT (xv->widgetwindow), XG_XWIDGET_VIEW, (gpointer) (xv)); //the xwidget 517 g_object_set_data (G_OBJECT (xv->widgetwindow), XG_XWIDGET_VIEW, (gpointer) (xv)); //the xwidget window
554 518
555 519
556 gtk_widget_set_size_request (GTK_WIDGET (xv->widget), xww->width, xww->height); 520 gtk_widget_set_size_request (GTK_WIDGET (xv->widget), xww->width, xww->height);
@@ -559,19 +523,6 @@ xwidget_init_view (
559 xv->x = x; xv->y = y; 523 xv->x = x; xv->y = y;
560 gtk_widget_show_all (GTK_WIDGET (xv->widgetwindow)); 524 gtk_widget_show_all (GTK_WIDGET (xv->widgetwindow));
561 525
562
563 //this seems to enable xcomposition. later we need to paint ourselves somehow,
564 //since the widget is no longer responsible for painting itself
565 //if(xw->type!=3) //im having trouble with compositing and sockets. hmmm.
566 //gdk_window_set_composited (xw->widget->window, TRUE);
567 //gdk_window_set_composited (GTK_LAYOUT (xw->widgetwindow)->bin_window, TRUE);
568 // gtk_widget_set_double_buffered (xw->widget,FALSE);
569 // gtk_widget_set_double_buffered (xw->widgetwindow,FALSE);
570 //gdk_window_set_composited (xw->widgetwindow, TRUE);
571 //g_signal_connect_after(xw->widget, "expose-event", G_CALLBACK(xwidget_composite_draw), "widget exposed");
572 //g_signal_connect_after(xw->widgetwindow, "expose-event", G_CALLBACK(xwidget_composite_draw_widgetwindow), "widgetwindow exposed");
573 // g_signal_connect_after(xw->widget, "damage-event", G_CALLBACK(xwidget_composite_draw), "damaged");
574
575 //widgettype specific initialization only possible after realization 526 //widgettype specific initialization only possible after realization
576 if (EQ(xww->type, Qsocket)) { 527 if (EQ(xww->type, Qsocket)) {
577 printf ("xwid:%d socket id:%x %d\n", 528 printf ("xwid:%d socket id:%x %d\n",
@@ -693,8 +644,6 @@ DEFUN ("xwidget-webkit-get-title", Fxwidget_webkit_get_title, Sxwidget_webkit_g
693 return make_string_from_bytes(str, wcslen((const wchar_t *)str), strlen(str)); 644 return make_string_from_bytes(str, wcslen((const wchar_t *)str), strlen(str));
694} 645}
695 646
696
697
698#endif 647#endif
699 648
700 649