[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] master ad25316: Prevent introducing invalid scroll bar wid
From: |
Martin Rudalics |
Subject: |
[Emacs-diffs] master ad25316: Prevent introducing invalid scroll bar width/height values (Bug#34569) |
Date: |
Mon, 4 Mar 2019 04:29:24 -0500 (EST) |
branch: master
commit ad25316bde7fece9745557f846170718837ee6da
Author: Martin Rudalics <address@hidden>
Commit: Martin Rudalics <address@hidden>
Prevent introducing invalid scroll bar width/height values (Bug#34569)
* src/frame.c (store_frame_param): Don't store invalid values
for scroll_bar_width/height.
(x_report_frame_params): Don't report invalid values for
scroll_bar_width/height.
(x_set_scroll_bar_width, x_set_scroll_bar_height): Don't set
invalid values for scroll_bar_width/height.
---
src/frame.c | 43 +++++++++++++++++++++++--------------------
1 file changed, 23 insertions(+), 20 deletions(-)
diff --git a/src/frame.c b/src/frame.c
index c7108d6..165ed4a 100644
--- a/src/frame.c
+++ b/src/frame.c
@@ -2973,6 +2973,13 @@ store_frame_param (struct frame *f, Lisp_Object prop,
Lisp_Object val)
fset_buried_buffer_list (f, Fnreverse (list));
return;
}
+ else if ((EQ (prop, Qscroll_bar_width) || EQ (prop, Qscroll_bar_height))
+ && !NILP (val) && !RANGED_FIXNUMP (1, val, INT_MAX))
+ {
+ Lisp_Object old_val = Fcdr (Fassq (prop, f->param_alist));
+
+ val = old_val;
+ }
/* The tty color needed to be set before the frame's parameter
alist was updated with the new value. This is not true any more,
@@ -4117,18 +4124,14 @@ x_report_frame_params (struct frame *f, Lisp_Object
*alistptr)
store_in_alist (alistptr, Qright_fringe,
make_fixnum (FRAME_RIGHT_FRINGE_WIDTH (f)));
store_in_alist (alistptr, Qscroll_bar_width,
- (! FRAME_HAS_VERTICAL_SCROLL_BARS (f)
- ? make_fixnum (0)
- : FRAME_CONFIG_SCROLL_BAR_WIDTH (f) > 0
+ (FRAME_CONFIG_SCROLL_BAR_WIDTH (f) > 0
? make_fixnum (FRAME_CONFIG_SCROLL_BAR_WIDTH (f))
/* nil means "use default width"
for non-toolkit scroll bar.
ruler-mode.el depends on this. */
: Qnil));
store_in_alist (alistptr, Qscroll_bar_height,
- (! FRAME_HAS_HORIZONTAL_SCROLL_BARS (f)
- ? make_fixnum (0)
- : FRAME_CONFIG_SCROLL_BAR_HEIGHT (f) > 0
+ (FRAME_CONFIG_SCROLL_BAR_HEIGHT (f) > 0
? make_fixnum (FRAME_CONFIG_SCROLL_BAR_HEIGHT (f))
/* nil means "use default height"
for non-toolkit scroll bar. */
@@ -4598,20 +4601,20 @@ x_set_scroll_bar_width (struct frame *f, Lisp_Object
arg, Lisp_Object oldval)
{
int unit = FRAME_COLUMN_WIDTH (f);
- if (NILP (arg))
+ if (RANGED_FIXNUMP (1, arg, INT_MAX)
+ && XFIXNAT (arg) != FRAME_CONFIG_SCROLL_BAR_WIDTH (f))
{
- x_set_scroll_bar_default_width (f);
-
+ FRAME_CONFIG_SCROLL_BAR_WIDTH (f) = XFIXNAT (arg);
+ FRAME_CONFIG_SCROLL_BAR_COLS (f) = (XFIXNAT (arg) + unit - 1) / unit;
if (FRAME_X_WINDOW (f))
adjust_frame_size (f, -1, -1, 3, 0, Qscroll_bar_width);
SET_FRAME_GARBAGED (f);
}
- else if (RANGED_FIXNUMP (1, arg, INT_MAX)
- && XFIXNAT (arg) != FRAME_CONFIG_SCROLL_BAR_WIDTH (f))
+ else
{
- FRAME_CONFIG_SCROLL_BAR_WIDTH (f) = XFIXNAT (arg);
- FRAME_CONFIG_SCROLL_BAR_COLS (f) = (XFIXNAT (arg) + unit - 1) / unit;
+ x_set_scroll_bar_default_width (f);
+
if (FRAME_X_WINDOW (f))
adjust_frame_size (f, -1, -1, 3, 0, Qscroll_bar_width);
@@ -4628,20 +4631,20 @@ x_set_scroll_bar_height (struct frame *f, Lisp_Object
arg, Lisp_Object oldval)
#if USE_HORIZONTAL_SCROLL_BARS
int unit = FRAME_LINE_HEIGHT (f);
- if (NILP (arg))
+ if (RANGED_FIXNUMP (1, arg, INT_MAX)
+ && XFIXNAT (arg) != FRAME_CONFIG_SCROLL_BAR_HEIGHT (f))
{
- x_set_scroll_bar_default_height (f);
-
+ FRAME_CONFIG_SCROLL_BAR_HEIGHT (f) = XFIXNAT (arg);
+ FRAME_CONFIG_SCROLL_BAR_LINES (f) = (XFIXNAT (arg) + unit - 1) / unit;
if (FRAME_X_WINDOW (f))
adjust_frame_size (f, -1, -1, 3, 0, Qscroll_bar_height);
SET_FRAME_GARBAGED (f);
}
- else if (RANGED_FIXNUMP (1, arg, INT_MAX)
- && XFIXNAT (arg) != FRAME_CONFIG_SCROLL_BAR_HEIGHT (f))
+ else
{
- FRAME_CONFIG_SCROLL_BAR_HEIGHT (f) = XFIXNAT (arg);
- FRAME_CONFIG_SCROLL_BAR_LINES (f) = (XFIXNAT (arg) + unit - 1) / unit;
+ x_set_scroll_bar_default_height (f);
+
if (FRAME_X_WINDOW (f))
adjust_frame_size (f, -1, -1, 3, 0, Qscroll_bar_height);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] master ad25316: Prevent introducing invalid scroll bar width/height values (Bug#34569),
Martin Rudalics <=