diff options
| author | Grégoire Jadi | 2013-07-25 15:33:10 +0200 |
|---|---|---|
| committer | Grégoire Jadi | 2013-07-25 15:33:10 +0200 |
| commit | 5677ff6cfcbc19d352a029f1475eade9dfce93a5 (patch) | |
| tree | 594fa297e0c561212cea2a2f774016ae5b51b5ae | |
| parent | 7e457d94c0d3effe78d652d0141c53c41ce06b53 (diff) | |
| download | emacs-5677ff6cfcbc19d352a029f1475eade9dfce93a5.tar.gz emacs-5677ff6cfcbc19d352a029f1475eade9dfce93a5.zip | |
Always store GTK Widget as GtkWidget*.
* src/xwidget.h (struct xwidget): GtkContainer -> GtkWidget for
widgetwindow_osr.
(struct xwidget_view): GtkContainer -> GtkWidget for widgetwindow and
emacswindow.
| -rw-r--r-- | src/xwidget.c | 44 | ||||
| -rw-r--r-- | src/xwidget.h | 6 |
2 files changed, 25 insertions, 25 deletions
diff --git a/src/xwidget.c b/src/xwidget.c index eebb17d1aed..54efdba1797 100644 --- a/src/xwidget.c +++ b/src/xwidget.c | |||
| @@ -226,7 +226,7 @@ TYPE is a symbol which can take one of the following values: | |||
| 226 | (!NILP (Fget(xw->type, QCxwgir_class)))) { | 226 | (!NILP (Fget(xw->type, QCxwgir_class)))) { |
| 227 | printf("init osr widget\n"); | 227 | printf("init osr widget\n"); |
| 228 | block_input(); | 228 | block_input(); |
| 229 | xw->widgetwindow_osr = GTK_CONTAINER (gtk_offscreen_window_new ()); | 229 | xw->widgetwindow_osr = gtk_offscreen_window_new (); |
| 230 | gtk_window_resize(GTK_WINDOW(xw->widgetwindow_osr), xw->width, xw->height); | 230 | gtk_window_resize(GTK_WINDOW(xw->widgetwindow_osr), xw->width, xw->height); |
| 231 | 231 | ||
| 232 | if (EQ(xw->type, Qwebkit_osr)) | 232 | if (EQ(xw->type, Qwebkit_osr)) |
| @@ -238,9 +238,9 @@ TYPE is a symbol which can take one of the following values: | |||
| 238 | SDATA(Fcar(Fget(xw->type, QCxwgir_class)))); | 238 | SDATA(Fcar(Fget(xw->type, QCxwgir_class)))); |
| 239 | 239 | ||
| 240 | gtk_widget_set_size_request (GTK_WIDGET (xw->widget_osr), xw->width, xw->height); | 240 | gtk_widget_set_size_request (GTK_WIDGET (xw->widget_osr), xw->width, xw->height); |
| 241 | gtk_container_add (xw->widgetwindow_osr, xw->widget_osr); | 241 | gtk_container_add (GTK_CONTAINER (xw->widgetwindow_osr), xw->widget_osr); |
| 242 | 242 | ||
| 243 | gtk_widget_show_all (GTK_WIDGET (xw->widgetwindow_osr)); | 243 | gtk_widget_show_all (xw->widgetwindow_osr); |
| 244 | 244 | ||
| 245 | /* store some xwidget data in the gtk widgets for convenient retrieval in the event handlers. */ | 245 | /* store some xwidget data in the gtk widgets for convenient retrieval in the event handlers. */ |
| 246 | g_object_set_data (G_OBJECT (xw->widget_osr), XG_XWIDGET, (gpointer) (xw)); | 246 | g_object_set_data (G_OBJECT (xw->widget_osr), XG_XWIDGET, (gpointer) (xw)); |
| @@ -381,8 +381,8 @@ void | |||
| 381 | xwidget_show_view (struct xwidget_view *xv) | 381 | xwidget_show_view (struct xwidget_view *xv) |
| 382 | { | 382 | { |
| 383 | xv->hidden = 0; | 383 | xv->hidden = 0; |
| 384 | gtk_widget_show(GTK_WIDGET(xv->widgetwindow)); | 384 | gtk_widget_show(xv->widgetwindow); |
| 385 | gtk_fixed_move (GTK_FIXED (xv->emacswindow), GTK_WIDGET (xv->widgetwindow), xv->x + xv->clip_left, xv->y + xv->clip_top); //TODO refactor | 385 | gtk_fixed_move (GTK_FIXED (xv->emacswindow), xv->widgetwindow, xv->x + xv->clip_left, xv->y + xv->clip_top); //TODO refactor |
| 386 | } | 386 | } |
| 387 | 387 | ||
| 388 | 388 | ||
| @@ -391,8 +391,8 @@ void | |||
| 391 | xwidget_hide_view (struct xwidget_view *xv) | 391 | xwidget_hide_view (struct xwidget_view *xv) |
| 392 | { | 392 | { |
| 393 | xv->hidden = 1; | 393 | xv->hidden = 1; |
| 394 | //gtk_widget_hide(GTK_WIDGET(xw->widgetwindow)); | 394 | //gtk_widget_hide(xw->widgetwindow); |
| 395 | gtk_fixed_move (GTK_FIXED (xv->emacswindow), GTK_WIDGET (xv->widgetwindow), | 395 | gtk_fixed_move (GTK_FIXED (xv->emacswindow), xv->widgetwindow, |
| 396 | 10000, 10000); | 396 | 10000, 10000); |
| 397 | } | 397 | } |
| 398 | 398 | ||
| @@ -1054,10 +1054,10 @@ xwidget_init_view (struct xwidget *xww, | |||
| 1054 | //later, drawing should crop container window if necessary to handle case where xwidget | 1054 | //later, drawing should crop container window if necessary to handle case where xwidget |
| 1055 | //is partially obscured by other emacs windows | 1055 | //is partially obscured by other emacs windows |
| 1056 | //other containers than gtk_fixed where explored, but gtk_fixed had the most predictable behaviour so far. | 1056 | //other containers than gtk_fixed where explored, but gtk_fixed had the most predictable behaviour so far. |
| 1057 | xv->emacswindow = GTK_CONTAINER (FRAME_GTK_WIDGET (s->f)); | 1057 | xv->emacswindow = FRAME_GTK_WIDGET (s->f); |
| 1058 | xv->widgetwindow = GTK_CONTAINER (gtk_fixed_new ()); | 1058 | xv->widgetwindow = gtk_fixed_new (); |
| 1059 | gtk_widget_set_has_window(GTK_WIDGET ( xv->widgetwindow), TRUE); | 1059 | gtk_widget_set_has_window(xv->widgetwindow, TRUE); |
| 1060 | gtk_container_add (xv->widgetwindow, xv->widget); | 1060 | gtk_container_add (GTK_CONTAINER (xv->widgetwindow), xv->widget); |
| 1061 | 1061 | ||
| 1062 | //store some xwidget data in the gtk widgets | 1062 | //store some xwidget data in the gtk widgets |
| 1063 | g_object_set_data (G_OBJECT (xv->widget), XG_FRAME_DATA, (gpointer) (s->f)); //the emacs frame | 1063 | g_object_set_data (G_OBJECT (xv->widget), XG_FRAME_DATA, (gpointer) (s->f)); //the emacs frame |
| @@ -1068,10 +1068,10 @@ xwidget_init_view (struct xwidget *xww, | |||
| 1068 | 1068 | ||
| 1069 | 1069 | ||
| 1070 | gtk_widget_set_size_request (GTK_WIDGET (xv->widget), xww->width, xww->height); | 1070 | gtk_widget_set_size_request (GTK_WIDGET (xv->widget), xww->width, xww->height); |
| 1071 | gtk_widget_set_size_request (GTK_WIDGET (xv->widgetwindow), xww->width, xww->height); | 1071 | gtk_widget_set_size_request (xv->widgetwindow, xww->width, xww->height); |
| 1072 | gtk_fixed_put (GTK_FIXED (FRAME_GTK_WIDGET (s->f)), GTK_WIDGET (xv->widgetwindow), x, y); | 1072 | gtk_fixed_put (GTK_FIXED (FRAME_GTK_WIDGET (s->f)), xv->widgetwindow, x, y); |
| 1073 | xv->x = x; xv->y = y; | 1073 | xv->x = x; xv->y = y; |
| 1074 | gtk_widget_show_all (GTK_WIDGET (xv->widgetwindow)); | 1074 | gtk_widget_show_all (xv->widgetwindow); |
| 1075 | 1075 | ||
| 1076 | 1076 | ||
| 1077 | 1077 | ||
| @@ -1163,7 +1163,7 @@ x_draw_xwidget_glyph_string (struct glyph_string *s) | |||
| 1163 | { | 1163 | { |
| 1164 | //TODO should be possible to use xwidget_show_view here | 1164 | //TODO should be possible to use xwidget_show_view here |
| 1165 | gtk_fixed_move (GTK_FIXED (FRAME_GTK_WIDGET (s->f)), | 1165 | gtk_fixed_move (GTK_FIXED (FRAME_GTK_WIDGET (s->f)), |
| 1166 | GTK_WIDGET (xv->widgetwindow), | 1166 | xv->widgetwindow, |
| 1167 | x + clip_left, y + clip_top); | 1167 | x + clip_left, y + clip_top); |
| 1168 | } | 1168 | } |
| 1169 | } | 1169 | } |
| @@ -1174,7 +1174,7 @@ x_draw_xwidget_glyph_string (struct glyph_string *s) | |||
| 1174 | || (xv->clip_bottom != clip_bottom) | 1174 | || (xv->clip_bottom != clip_bottom) |
| 1175 | || (xv->clip_top != clip_top) | 1175 | || (xv->clip_top != clip_top) |
| 1176 | || (xv->clip_left != clip_left)){ | 1176 | || (xv->clip_left != clip_left)){ |
| 1177 | gtk_widget_set_size_request (GTK_WIDGET (xv->widgetwindow), clip_right + clip_left, clip_bottom + clip_top); | 1177 | gtk_widget_set_size_request (xv->widgetwindow, clip_right + clip_left, clip_bottom + clip_top); |
| 1178 | gtk_fixed_move(GTK_FIXED(xv->widgetwindow), xv->widget, -clip_left, -clip_top); | 1178 | gtk_fixed_move(GTK_FIXED(xv->widgetwindow), xv->widget, -clip_left, -clip_top); |
| 1179 | printf("reclip %d %d -> %d %d clip_top:%d clip_left:%d\n",xv->clip_right, xv->clip_bottom, clip_right, clip_bottom, clip_top , clip_left); | 1179 | printf("reclip %d %d -> %d %d clip_top:%d clip_left:%d\n",xv->clip_right, xv->clip_bottom, clip_right, clip_bottom, clip_top , clip_left); |
| 1180 | 1180 | ||
| @@ -1185,7 +1185,7 @@ x_draw_xwidget_glyph_string (struct glyph_string *s) | |||
| 1185 | //TODO it seems its possible to get out of sync with emacs redraws so emacs bg sometimes shows up instead of xwidget | 1185 | //TODO it seems its possible to get out of sync with emacs redraws so emacs bg sometimes shows up instead of xwidget |
| 1186 | //its just a visual glitch though | 1186 | //its just a visual glitch though |
| 1187 | if (!xwidget_hidden(xv)){ | 1187 | if (!xwidget_hidden(xv)){ |
| 1188 | gtk_widget_queue_draw (GTK_WIDGET(xv->widgetwindow)); | 1188 | gtk_widget_queue_draw (xv->widgetwindow); |
| 1189 | gtk_widget_queue_draw (xv->widget); | 1189 | gtk_widget_queue_draw (xv->widget); |
| 1190 | } | 1190 | } |
| 1191 | } | 1191 | } |
| @@ -1359,7 +1359,7 @@ DEFUN ("xwidget-resize", Fxwidget_resize, Sxwidget_resize, 3, 3, 0, doc: | |||
| 1359 | //gtk_window_resize( GTK_WINDOW(xw->widget_osr), xw->width, xw->height); | 1359 | //gtk_window_resize( GTK_WINDOW(xw->widget_osr), xw->width, xw->height); |
| 1360 | gtk_window_resize( GTK_WINDOW(xw->widgetwindow_osr), xw->width, xw->height); | 1360 | gtk_window_resize( GTK_WINDOW(xw->widgetwindow_osr), xw->width, xw->height); |
| 1361 | //gtk_container_resize_children ( GTK_WINDOW(xw->widgetwindow_osr)); | 1361 | //gtk_container_resize_children ( GTK_WINDOW(xw->widgetwindow_osr)); |
| 1362 | gtk_container_resize_children ( GTK_CONTAINER(xw->widgetwindow_osr)); | 1362 | gtk_container_resize_children (GTK_CONTAINER(xw->widgetwindow_osr)); |
| 1363 | 1363 | ||
| 1364 | } | 1364 | } |
| 1365 | 1365 | ||
| @@ -1531,7 +1531,7 @@ DEFUN ("delete-xwidget-view", Fdelete_xwidget_view, Sdelete_xwidget_view, | |||
| 1531 | { | 1531 | { |
| 1532 | CHECK_XWIDGET_VIEW (xwidget_view); | 1532 | CHECK_XWIDGET_VIEW (xwidget_view); |
| 1533 | struct xwidget_view *xv = XXWIDGET_VIEW (xwidget_view); | 1533 | struct xwidget_view *xv = XXWIDGET_VIEW (xwidget_view); |
| 1534 | gtk_widget_destroy(GTK_WIDGET (xv->widgetwindow)); | 1534 | gtk_widget_destroy(xv->widgetwindow); |
| 1535 | Vxwidget_view_list = Fdelq (xwidget_view, Vxwidget_view_list); | 1535 | Vxwidget_view_list = Fdelq (xwidget_view, Vxwidget_view_list); |
| 1536 | } | 1536 | } |
| 1537 | 1537 | ||
| @@ -1765,7 +1765,7 @@ xwidget_view_delete_all_in_window (struct window *w) | |||
| 1765 | if (XWIDGET_VIEW_P (XCAR (tail))) { | 1765 | if (XWIDGET_VIEW_P (XCAR (tail))) { |
| 1766 | xv = XXWIDGET_VIEW (XCAR (tail)); | 1766 | xv = XXWIDGET_VIEW (XCAR (tail)); |
| 1767 | if(XWINDOW (xv->w) == w) { | 1767 | if(XWINDOW (xv->w) == w) { |
| 1768 | gtk_widget_destroy(GTK_WIDGET(xv->widgetwindow)); | 1768 | gtk_widget_destroy(xv->widgetwindow); |
| 1769 | Vxwidget_view_list = Fdelq (XCAR (tail), Vxwidget_view_list); | 1769 | Vxwidget_view_list = Fdelq (XCAR (tail), Vxwidget_view_list); |
| 1770 | } | 1770 | } |
| 1771 | } | 1771 | } |
| @@ -1922,8 +1922,8 @@ kill_buffer_xwidgets (Lisp_Object buffer) | |||
| 1922 | struct xwidget *xw = XXWIDGET (xwidget); | 1922 | struct xwidget *xw = XXWIDGET (xwidget); |
| 1923 | if (xw->widget_osr && xw->widgetwindow_osr) | 1923 | if (xw->widget_osr && xw->widgetwindow_osr) |
| 1924 | { | 1924 | { |
| 1925 | gtk_widget_destroy(GTK_WIDGET (xw->widget_osr)); | 1925 | gtk_widget_destroy(xw->widget_osr); |
| 1926 | gtk_widget_destroy(GTK_WIDGET (xw->widgetwindow_osr)); | 1926 | gtk_widget_destroy(xw->widgetwindow_osr); |
| 1927 | } | 1927 | } |
| 1928 | } | 1928 | } |
| 1929 | } | 1929 | } |
diff --git a/src/xwidget.h b/src/xwidget.h index 786a3bf4941..18a9a1da483 100644 --- a/src/xwidget.h +++ b/src/xwidget.h | |||
| @@ -33,7 +33,7 @@ struct xwidget{ | |||
| 33 | 33 | ||
| 34 | //for offscreen widgets, unused if not osr | 34 | //for offscreen widgets, unused if not osr |
| 35 | GtkWidget* widget_osr; | 35 | GtkWidget* widget_osr; |
| 36 | GtkContainer* widgetwindow_osr; | 36 | GtkWidget* widgetwindow_osr; |
| 37 | /* Non-nil means kill silently if Emacs is exited. */ | 37 | /* Non-nil means kill silently if Emacs is exited. */ |
| 38 | unsigned int kill_without_query : 1; | 38 | unsigned int kill_without_query : 1; |
| 39 | 39 | ||
| @@ -53,8 +53,8 @@ struct xwidget_view { | |||
| 53 | int hidden;//if the "live" instance isnt drawn | 53 | int hidden;//if the "live" instance isnt drawn |
| 54 | 54 | ||
| 55 | GtkWidget* widget; | 55 | GtkWidget* widget; |
| 56 | GtkContainer* widgetwindow; | 56 | GtkWidget* widgetwindow; |
| 57 | GtkContainer* emacswindow; | 57 | GtkWidget* emacswindow; |
| 58 | int x; int y; | 58 | int x; int y; |
| 59 | int clip_right; int clip_bottom; int clip_top; int clip_left; | 59 | int clip_right; int clip_bottom; int clip_top; int clip_left; |
| 60 | 60 | ||