diff options
| author | Joakim Verona | 2011-07-18 17:16:34 +0200 |
|---|---|---|
| committer | Joakim Verona | 2011-07-18 17:16:34 +0200 |
| commit | cd1f21dd9e794a14aa6907296c6ee95cc5f693a1 (patch) | |
| tree | caa4bd621b770f0672d919da5023f84018ea7478 /src/xwidget.c | |
| parent | f7679969e190ec203eb46e0937185900b72f11c7 (diff) | |
| download | emacs-cd1f21dd9e794a14aa6907296c6ee95cc5f693a1.tar.gz emacs-cd1f21dd9e794a14aa6907296c6ee95cc5f693a1.zip | |
cleanup xv init test, and introduce PVEC_XWIDGET
Diffstat (limited to 'src/xwidget.c')
| -rw-r--r-- | src/xwidget.c | 27 |
1 files changed, 14 insertions, 13 deletions
diff --git a/src/xwidget.c b/src/xwidget.c index 6a0d3ee4340..263e8553ca9 100644 --- a/src/xwidget.c +++ b/src/xwidget.c | |||
| @@ -109,14 +109,14 @@ struct xwidget_view xwidget_views[MAX_XWIDGETS]; | |||
| 109 | struct xwidget* | 109 | struct xwidget* |
| 110 | allocate_xwidget (void) | 110 | allocate_xwidget (void) |
| 111 | { | 111 | { |
| 112 | return ALLOCATE_PSEUDOVECTOR (struct xwidget, height, PVEC_OTHER); | 112 | return ALLOCATE_PSEUDOVECTOR (struct xwidget, height, PVEC_XWIDGET); |
| 113 | } | 113 | } |
| 114 | 114 | ||
| 115 | //TODO xwidget_view* should be Lisp_xwidget_view* | 115 | //TODO xwidget_view* should be Lisp_xwidget_view* |
| 116 | struct xwidget_view* | 116 | struct xwidget_view* |
| 117 | allocate_xwidget_view (void) | 117 | allocate_xwidget_view (void) |
| 118 | { | 118 | { |
| 119 | return ALLOCATE_PSEUDOVECTOR (struct xwidget_view, redisplayed, PVEC_OTHER); | 119 | return ALLOCATE_PSEUDOVECTOR (struct xwidget_view, redisplayed, PVEC_XWIDGET_VIEW); |
| 120 | } | 120 | } |
| 121 | 121 | ||
| 122 | 122 | ||
| @@ -162,7 +162,7 @@ DEFUN ("make-xwidget", Fmake_xwidget, Smake_xwidget, 7, 7, 0, | |||
| 162 | XSETBUFFER(xw->buffer, Fcurrent_buffer()); // conservatively gcpro xw since we call lisp | 162 | XSETBUFFER(xw->buffer, Fcurrent_buffer()); // conservatively gcpro xw since we call lisp |
| 163 | xw->height = XFASTINT(height); | 163 | xw->height = XFASTINT(height); |
| 164 | xw->width = XFASTINT(width); | 164 | xw->width = XFASTINT(width); |
| 165 | XSETPSEUDOVECTOR (val, xw, PVEC_OTHER); //?? dunno why i need this | 165 | XSETPSEUDOVECTOR (val, xw, PVEC_XWIDGET); //?? dunno why i need this |
| 166 | Vxwidget_alist = Fcons ( val, Vxwidget_alist); | 166 | Vxwidget_alist = Fcons ( val, Vxwidget_alist); |
| 167 | xw->widgetwindow_osr = NULL; | 167 | xw->widgetwindow_osr = NULL; |
| 168 | xw->widget_osr = NULL; | 168 | xw->widget_osr = NULL; |
| @@ -323,7 +323,7 @@ void xwidget_slider_changed (GtkRange *range, | |||
| 323 | for (int i = 0; i < MAX_XWIDGETS; i++) | 323 | for (int i = 0; i < MAX_XWIDGETS; i++) |
| 324 | { | 324 | { |
| 325 | xv = &xwidget_views[i]; | 325 | xv = &xwidget_views[i]; |
| 326 | if(xvp->model == xv->model){ | 326 | if(xv->initialized && xvp->model == xv->model){ |
| 327 | g_signal_handler_block( xv->widget,xv->handler_id); | 327 | g_signal_handler_block( xv->widget,xv->handler_id); |
| 328 | } | 328 | } |
| 329 | } | 329 | } |
| @@ -331,7 +331,7 @@ void xwidget_slider_changed (GtkRange *range, | |||
| 331 | for (int i = 0; i < MAX_XWIDGETS; i++) | 331 | for (int i = 0; i < MAX_XWIDGETS; i++) |
| 332 | { | 332 | { |
| 333 | xv = &xwidget_views[i]; | 333 | xv = &xwidget_views[i]; |
| 334 | if(xvp->model == xv->model){ | 334 | if(xv->initialized && xvp->model == xv->model){ |
| 335 | gtk_range_set_value(GTK_RANGE(xv->widget), v); | 335 | gtk_range_set_value(GTK_RANGE(xv->widget), v); |
| 336 | g_signal_handler_unblock( xv->widget,xv->handler_id); | 336 | g_signal_handler_unblock( xv->widget,xv->handler_id); |
| 337 | } | 337 | } |
| @@ -352,7 +352,7 @@ gboolean webkit_osr_damage_event_callback (GtkWidget *widget, GdkEventExpose *ev | |||
| 352 | for (int i = 0; i < MAX_XWIDGETS; i++)//todo mvc refactor | 352 | for (int i = 0; i < MAX_XWIDGETS; i++)//todo mvc refactor |
| 353 | { | 353 | { |
| 354 | xv = &xwidget_views[i]; | 354 | xv = &xwidget_views[i]; |
| 355 | if(xv->model == xw){ | 355 | if(xv->initialized && xv->model == xw){ |
| 356 | gtk_widget_queue_draw (xv->widget); //redraw all views, the master has changed | 356 | gtk_widget_queue_draw (xv->widget); //redraw all views, the master has changed |
| 357 | } | 357 | } |
| 358 | } | 358 | } |
| @@ -724,7 +724,7 @@ DEFUN ("xwidget-resize", Fxwidget_resize, Sxwidget_resize, 3, 3, 0, doc: | |||
| 724 | for (int i = 0; i < MAX_XWIDGETS; i++) //TODO MVC refactor lazy linear search | 724 | for (int i = 0; i < MAX_XWIDGETS; i++) //TODO MVC refactor lazy linear search |
| 725 | { | 725 | { |
| 726 | xv = &xwidget_views[i]; | 726 | xv = &xwidget_views[i]; |
| 727 | if(xv->model == xw){ | 727 | if(xv->initialized && xv->model == xw){ |
| 728 | gtk_layout_set_size (GTK_LAYOUT (xv->widgetwindow), xw->width, xw->height); | 728 | gtk_layout_set_size (GTK_LAYOUT (xv->widgetwindow), xw->width, xw->height); |
| 729 | gtk_widget_set_size_request (GTK_WIDGET (xv->widget), xw->width, xw->height); | 729 | gtk_widget_set_size_request (GTK_WIDGET (xv->widget), xw->width, xw->height); |
| 730 | } | 730 | } |
| @@ -923,7 +923,7 @@ void xwidget_view_delete_all_in_window( struct window *w ) | |||
| 923 | struct xwidget_view* xv = NULL; | 923 | struct xwidget_view* xv = NULL; |
| 924 | for (int i = 0; i < MAX_XWIDGETS; i++){ | 924 | for (int i = 0; i < MAX_XWIDGETS; i++){ |
| 925 | xv = &xwidget_views[i]; | 925 | xv = &xwidget_views[i]; |
| 926 | if(xv->w == w){ | 926 | if(xv->initialized && xv->w == w){ |
| 927 | gtk_widget_destroy(GTK_WIDGET(xv->widgetwindow)); | 927 | gtk_widget_destroy(GTK_WIDGET(xv->widgetwindow)); |
| 928 | xv->initialized = 0; | 928 | xv->initialized = 0; |
| 929 | } | 929 | } |
| @@ -934,14 +934,15 @@ void xwidget_view_delete_all_in_window( struct window *w ) | |||
| 934 | 934 | ||
| 935 | struct xwidget_view* xwidget_view_lookup(struct xwidget* xw, struct window *w){ | 935 | struct xwidget_view* xwidget_view_lookup(struct xwidget* xw, struct window *w){ |
| 936 | struct xwidget_view* xv = NULL; | 936 | struct xwidget_view* xv = NULL; |
| 937 | for (int i = 0; i < MAX_XWIDGETS; i++) | 937 | for (int i = 0; i < MAX_XWIDGETS; i++){ |
| 938 | if ((xwidget_views[i].model == xw) && (xwidget_views[i].w == w)) | 938 | xv = &xwidget_views[i]; |
| 939 | xv = &xwidget_views[i]; | 939 | if (xv->initialized && (xv->model == xw) && (xv->w == w)) |
| 940 | 940 | return xv; | |
| 941 | return xv; | 941 | } |
| 942 | } | 942 | } |
| 943 | 943 | ||
| 944 | //attempting a workaround for a webkit offscreen bug | 944 | //attempting a workaround for a webkit offscreen bug |
| 945 | //TODO verify its still needed | ||
| 945 | void gtk_window_get_position (GtkWindow *window, | 946 | void gtk_window_get_position (GtkWindow *window, |
| 946 | gint *root_x, | 947 | gint *root_x, |
| 947 | gint *root_y){ | 948 | gint *root_y){ |