diff options
| author | Joakim Verona | 2011-07-25 10:54:22 +0200 |
|---|---|---|
| committer | Joakim Verona | 2011-07-25 10:54:22 +0200 |
| commit | 37d6e227b2e4460b36363e42a3de45c082233c74 (patch) | |
| tree | 99ce5c28b62bd068319ab2c24a97adf764c9a2e2 /src/xwidget.c | |
| parent | b60646c64ead035bff3e5ba925f768f36964f661 (diff) | |
| parent | 0f0a88b94cce778a7903196b07a0d70657fb4dc0 (diff) | |
| download | emacs-37d6e227b2e4460b36363e42a3de45c082233c74.tar.gz emacs-37d6e227b2e4460b36363e42a3de45c082233c74.zip | |
upstream merge. cleanup
Diffstat (limited to 'src/xwidget.c')
| -rw-r--r-- | src/xwidget.c | 59 |
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 | ||
| 259 | int xwidget_query_composition_called = 0; | ||
| 260 | int hasNamePixmap = 0; | ||
| 261 | |||
| 262 | |||
| 263 | |||
| 264 | |||
| 265 | |||
| 266 | |||
| 267 | |||
| 268 | void | 259 | void |
| 269 | xwidget_show_view (struct xwidget_view *xv) | 260 | xwidget_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) | |||
| 279 | void | 269 | void |
| 280 | xwidget_hide_view (struct xwidget_view *xv) | 270 | xwidget_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 | ||