X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/131a3a12c4b0171c71c122c3330f85fc19e9bb8f..7e09ef09a479731d01b1ca46e94ddadd73ac98e3:/src/fringe.c diff --git a/src/fringe.c b/src/fringe.c index d00aee0e0b..9d393f86f7 100644 --- a/src/fringe.c +++ b/src/fringe.c @@ -1,5 +1,5 @@ /* Fringe handling (split from xdisp.c). - Copyright (C) 1985-1988, 1993-1995, 1997-2014 Free Software + Copyright (C) 1985-1988, 1993-1995, 1997-2015 Free Software Foundation, Inc. This file is part of GNU Emacs. @@ -1329,98 +1329,6 @@ update_window_fringes (struct window *w, bool keep_current_p) } -/* Compute actual fringe widths for frame F. - - If REDRAW is 1, redraw F if the fringe settings was actually - modified and F is visible. - - Since the combined left and right fringe must occupy an integral - number of columns, we may need to add some pixels to each fringe. - Typically, we add an equal amount (+/- 1 pixel) to each fringe, - but a negative width value is taken literally (after negating it). - - We never make the fringes narrower than specified. -*/ - -void -compute_fringe_widths (struct frame *f, bool redraw_p) -{ - int o_left = FRAME_LEFT_FRINGE_WIDTH (f); - int o_right = FRAME_RIGHT_FRINGE_WIDTH (f); - int o_cols = FRAME_FRINGE_COLS (f); - - Lisp_Object left_fringe = Fassq (Qleft_fringe, f->param_alist); - Lisp_Object right_fringe = Fassq (Qright_fringe, f->param_alist); - int left_fringe_width, right_fringe_width; - - if (!NILP (left_fringe)) - left_fringe = Fcdr (left_fringe); - if (!NILP (right_fringe)) - right_fringe = Fcdr (right_fringe); - - left_fringe_width = ((NILP (left_fringe) || !INTEGERP (left_fringe)) ? 8 : - XINT (left_fringe)); - right_fringe_width = ((NILP (right_fringe) || !INTEGERP (right_fringe)) ? 8 : - XINT (right_fringe)); - - if (left_fringe_width || right_fringe_width) - { - int left_wid = eabs (left_fringe_width); - int right_wid = eabs (right_fringe_width); - int conf_wid = left_wid + right_wid; - int font_wid = FRAME_COLUMN_WIDTH (f); - int cols = (left_wid + right_wid + font_wid-1) / font_wid; - int real_wid = cols * font_wid; - if (left_wid && right_wid) - { - if (left_fringe_width < 0) - { - /* Left fringe width is fixed, adjust right fringe if necessary */ - FRAME_LEFT_FRINGE_WIDTH (f) = left_wid; - FRAME_RIGHT_FRINGE_WIDTH (f) = real_wid - left_wid; - } - else if (right_fringe_width < 0) - { - /* Right fringe width is fixed, adjust left fringe if necessary */ - FRAME_LEFT_FRINGE_WIDTH (f) = real_wid - right_wid; - FRAME_RIGHT_FRINGE_WIDTH (f) = right_wid; - } - else - { - /* Adjust both fringes with an equal amount. - Note that we are doing integer arithmetic here, so don't - lose a pixel if the total width is an odd number. */ - int fill = real_wid - conf_wid; - FRAME_LEFT_FRINGE_WIDTH (f) = left_wid + fill/2; - FRAME_RIGHT_FRINGE_WIDTH (f) = right_wid + fill - fill/2; - } - } - else if (left_fringe_width) - { - FRAME_LEFT_FRINGE_WIDTH (f) = real_wid; - FRAME_RIGHT_FRINGE_WIDTH (f) = 0; - } - else - { - FRAME_LEFT_FRINGE_WIDTH (f) = 0; - FRAME_RIGHT_FRINGE_WIDTH (f) = real_wid; - } - FRAME_FRINGE_COLS (f) = cols; - } - else - { - FRAME_LEFT_FRINGE_WIDTH (f) = 0; - FRAME_RIGHT_FRINGE_WIDTH (f) = 0; - FRAME_FRINGE_COLS (f) = 0; - } - - if (redraw_p && FRAME_VISIBLE_P (f)) - if (o_left != FRAME_LEFT_FRINGE_WIDTH (f) || - o_right != FRAME_RIGHT_FRINGE_WIDTH (f) || - o_cols != FRAME_FRINGE_COLS (f)) - redraw_frame (f); -} - /* Free resources used by a user-defined bitmap. */ @@ -1571,13 +1479,7 @@ If BITMAP already exists, the existing definition is replaced. */) int fill1 = 0, fill2 = 0; CHECK_SYMBOL (bitmap); - - if (STRINGP (bits)) - h = SCHARS (bits); - else if (VECTORP (bits)) - h = ASIZE (bits); - else - wrong_type_argument (Qsequencep, bits); + h = CHECK_VECTOR_OR_STRING (bits); if (NILP (height)) fb.height = h;