X-Git-Url: http://git.chise.org/gitweb/?p=chise%2Fxemacs-chise.git.1;a=blobdiff_plain;f=src%2Fglyphs-widget.c;h=988e59420a1ef37ba19b867dff8f20e83c1829df;hp=91946b0ea7e30a5981e7bb137b9c719d70f40209;hb=0a57cba46779af884cc537d18923dcb6313b9904;hpb=ac7d0619aad74b1d57c4748ebb3ab29d9c32e3d8 diff --git a/src/glyphs-widget.c b/src/glyphs-widget.c index 91946b0..988e594 100644 --- a/src/glyphs-widget.c +++ b/src/glyphs-widget.c @@ -66,7 +66,7 @@ static int widget_border_width (Lisp_Object domain); static int widget_spacing (Lisp_Object domain); - +#define BORDER_FIDDLE_FACTOR 10 #ifdef DEBUG_WIDGETS int debug_widget_instances; #endif @@ -558,20 +558,20 @@ widget_query_geometry (Lisp_Object image_instance, IMAGE_INSTANCE_WIDGET_FACE (ii), &w, &h, 0, domain); /* Adjust the size for borders. */ - if (IMAGE_INSTANCE_SUBWINDOW_H_RESIZEP (ii)) + if (width && IMAGE_INSTANCE_SUBWINDOW_H_RESIZEP (ii)) *width = w + 2 * widget_instance_border_width (ii); - if (IMAGE_INSTANCE_SUBWINDOW_V_RESIZEP (ii)) + if (height && IMAGE_INSTANCE_SUBWINDOW_V_RESIZEP (ii)) *height = h + 2 * widget_instance_border_width (ii); } } /* Finish off with dynamic sizing. */ - if (!NILP (IMAGE_INSTANCE_WIDGET_WIDTH_SUBR (ii))) + if (width && !NILP (IMAGE_INSTANCE_WIDGET_WIDTH_SUBR (ii))) { dynamic_width = Feval (IMAGE_INSTANCE_WIDGET_WIDTH_SUBR (ii)); if (INTP (dynamic_width)) *width = XINT (dynamic_width); } - if (!NILP (IMAGE_INSTANCE_WIDGET_HEIGHT_SUBR (ii))) + if (height && !NILP (IMAGE_INSTANCE_WIDGET_HEIGHT_SUBR (ii))) { dynamic_height = Feval (IMAGE_INSTANCE_WIDGET_HEIGHT_SUBR (ii)); if (INTP (dynamic_height)) @@ -1317,6 +1317,9 @@ layout_query_geometry (Lisp_Object image_instance, int* width, glyph_query_geometry (XCAR (items), &gwidth, &gheight, disp, image_instance); ph_adjust = gheight; + /* Include text width in vertical layouts. */ + if (IMAGE_INSTANCE_SUBWINDOW_ORIENT (ii) == LAYOUT_VERTICAL) + maxpw = gwidth + BORDER_FIDDLE_FACTOR; items = XCDR (items); } @@ -1431,7 +1434,7 @@ layout_layout (Lisp_Object image_instance, IMAGE_INSTANCE_LAYOUT_BORDER (ii) = make_int (gheight / 2); /* #### Really, what should this be? */ - glyph_do_layout (border, gwidth, gheight, 10, 0, + glyph_do_layout (border, gwidth, gheight, BORDER_FIDDLE_FACTOR, 0, image_instance); }