Mercurial > hg > xemacs-beta
diff src/window.c @ 5052:92dc90c0bb40
merge
author | Ben Wing <ben@xemacs.org> |
---|---|
date | Sat, 20 Feb 2010 23:56:01 -0600 |
parents | 6f2158fa75ed 07dcc7000bbf |
children | 0ca81354c4c7 2a462149bd6a 8b2f75cecb89 |
line wrap: on
line diff
--- a/src/window.c Sat Feb 20 18:57:55 2010 -0600 +++ b/src/window.c Sat Feb 20 23:56:01 2010 -0600 @@ -1175,7 +1175,7 @@ margin_cwidth = (left_margin ? XINT (w->left_margin_width) : XINT (w->right_margin_width)); - default_face_height_and_width (window, 0, &font_width); + default_face_width_and_height (window, &font_width, 0); /* The left margin takes precedence over the right margin so we subtract its width from the space available for the right @@ -1658,7 +1658,7 @@ hlimit = WINDOW_TEXT_HEIGHT (w); eobuf = BUF_ZV (XBUFFER (w->buffer)); - default_face_height_and_width (window, &defheight, NULL); + default_face_width_and_height (window, NULL, &defheight); /* guess lines needed in line start cache + a few extra */ needed = (hlimit + defheight-1) / defheight + 3; @@ -3477,8 +3477,8 @@ /* Return non-zero if both frame sizes are less than or equal to minimal allowed values. ROWS and COLS are in characters */ -int -frame_size_valid_p (struct frame *frame, int rows, int cols) +static int +frame_size_valid_p (struct frame *frame, int cols, int rows) { return (rows >= frame_min_height (frame) && cols >= MIN_SAFE_WINDOW_WIDTH); @@ -3490,21 +3490,30 @@ frame_pixsize_valid_p (struct frame *frame, int width, int height) { int rows, cols; - pixel_to_real_char_size (frame, width, height, &cols, &rows); - return frame_size_valid_p (frame, rows, cols); + pixel_to_char_size (frame, width, height, &cols, &rows); + return frame_size_valid_p (frame, cols, rows); } /* If *ROWS or *COLS are too small a size for FRAME, set them to the minimum allowable size. */ void -check_frame_size (struct frame *frame, int *rows, int *cols) +check_frame_size (struct frame *frame, int *cols, int *rows) { int min_height = frame_min_height (frame); - - if (*rows < min_height) - *rows = min_height; - if (*cols < MIN_SAFE_WINDOW_WIDTH) - *cols = MIN_SAFE_WINDOW_WIDTH; + int min_pixwidth, min_pixheight; + int min_geomwidth, min_geomheight; + + /* There is no char_to_frame_unit_size(). This can be done with + frame_conversion_internal(), but that's currently static, and we can + do it fine with two steps, as follows. */ + char_to_pixel_size (frame, MIN_SAFE_WINDOW_WIDTH, min_height, + &min_pixwidth, &min_pixheight); + pixel_to_frame_unit_size (frame, min_pixwidth, min_pixheight, + &min_geomwidth, &min_geomheight); + if (*rows < min_geomheight) + *rows = min_geomheight; + if (*cols < min_geomwidth) + *cols = min_geomwidth; } /* Normally the window is deleted if it gets too small. @@ -3523,7 +3532,7 @@ int line_size; int defheight, defwidth; - default_face_height_and_width (window, &defheight, &defwidth); + default_face_width_and_height (window, &defwidth, &defheight); line_size = (set_height ? defheight : defwidth); check_min_window_sizes (); @@ -4127,7 +4136,7 @@ window_top_window_gutter_height (w) + window_bottom_window_gutter_height (w))); - default_face_height_and_width (window, &defheight, &defwidth); + default_face_width_and_height (window, &defwidth, &defheight); if (defheight) char_height = avail_height / defheight; @@ -4151,7 +4160,7 @@ Lisp_Object window = wrap_window (w); - default_face_height_and_width (window, &defheight, &defwidth); + default_face_width_and_height (window, &defwidth, &defheight); avail_height = char_height * defheight; pixel_height = (avail_height + @@ -4231,7 +4240,7 @@ } } - default_face_height_and_width (window, &defheight, &defwidth); + default_face_width_and_height (window, &defwidth, &defheight); /* #### This probably needs to know about the clipping area once a final definition is decided on. */ if (defheight) @@ -4274,7 +4283,7 @@ (include_margins_p ? 0 : window_left_margin_width (w)) - (include_margins_p ? 0 : window_right_margin_width (w))); - default_face_height_and_width (window, &defheight, &defwidth); + default_face_width_and_height (window, &defwidth, &defheight); if (defwidth) char_width = (avail_width / defwidth); @@ -4297,7 +4306,7 @@ Lisp_Object window = wrap_window (w); - default_face_height_and_width (window, &defheight, &defwidth); + default_face_width_and_height (window, &defwidth, &defheight); avail_width = char_width * defwidth; pixel_width = (avail_width + @@ -4380,7 +4389,7 @@ if (EQ (window, FRAME_ROOT_WINDOW (f))) invalid_operation ("Won't change only window", Qunbound); - default_face_height_and_width (window, &defheight, &defwidth); + default_face_width_and_height (window, &defwidth, &defheight); while (1) { @@ -4609,7 +4618,7 @@ if (INTP (Vwindow_pixel_scroll_increment)) fheight = XINT (Vwindow_pixel_scroll_increment); else if (!NILP (Vwindow_pixel_scroll_increment)) - default_face_height_and_width (window, &fheight, &fwidth); + default_face_width_and_height (window, &fwidth, &fheight); if (Dynarr_length (dla) >= 1) modeline = Dynarr_begin (dla)->modeline;