aboutsummaryrefslogtreecommitdiffstats
path: root/src/xwidget.c
diff options
context:
space:
mode:
authorJoakim Verona2011-07-18 17:16:34 +0200
committerJoakim Verona2011-07-18 17:16:34 +0200
commitcd1f21dd9e794a14aa6907296c6ee95cc5f693a1 (patch)
treecaa4bd621b770f0672d919da5023f84018ea7478 /src/xwidget.c
parentf7679969e190ec203eb46e0937185900b72f11c7 (diff)
downloademacs-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.c27
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];
109struct xwidget* 109struct xwidget*
110allocate_xwidget (void) 110allocate_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*
116struct xwidget_view* 116struct xwidget_view*
117allocate_xwidget_view (void) 117allocate_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
935struct xwidget_view* xwidget_view_lookup(struct xwidget* xw, struct window *w){ 935struct 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
945void gtk_window_get_position (GtkWindow *window, 946void gtk_window_get_position (GtkWindow *window,
946 gint *root_x, 947 gint *root_x,
947 gint *root_y){ 948 gint *root_y){