aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorKim F. Storm2005-10-11 15:07:28 +0000
committerKim F. Storm2005-10-11 15:07:28 +0000
commita65fc2c39764e81adc7359ce18e95f1990285b81 (patch)
treeab1015bfb22286015864515100e52a2e6eabe2ce /src
parent4d1add72eb8cf8a01a13d087855545625e3205ec (diff)
downloademacs-a65fc2c39764e81adc7359ce18e95f1990285b81.tar.gz
emacs-a65fc2c39764e81adc7359ce18e95f1990285b81.zip
(make_lispy_position): Fix buffer calculations for
mouse click or movement in right fringe and the margins.
Diffstat (limited to 'src')
-rw-r--r--src/keyboard.c39
1 files changed, 27 insertions, 12 deletions
diff --git a/src/keyboard.c b/src/keyboard.c
index 1d118c7a57b..56419ef5679 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -5090,21 +5090,37 @@ make_lispy_position (f, x, y, time)
5090 &object, &dx, &dy, &width, &height); 5090 &object, &dx, &dy, &width, &height);
5091 if (STRINGP (string)) 5091 if (STRINGP (string))
5092 string_info = Fcons (string, make_number (charpos)); 5092 string_info = Fcons (string, make_number (charpos));
5093 if (part == ON_LEFT_MARGIN)
5094 wx = 0;
5095 else
5096 wx = window_box_right_offset (w, TEXT_AREA) - 1;
5097 }
5098 else if (part == ON_LEFT_FRINGE)
5099 {
5100 posn = Qleft_fringe;
5101 rx = 0;
5102 dx = wx;
5103 wx = (WINDOW_HAS_FRINGES_OUTSIDE_MARGINS (w)
5104 ? 0
5105 : window_box_width (w, LEFT_MARGIN_AREA));
5106 dx -= wx;
5093 } 5107 }
5094 else if (part == ON_LEFT_FRINGE || part == ON_RIGHT_FRINGE) 5108 else if (part == ON_RIGHT_FRINGE)
5095 { 5109 {
5096 posn = (part == ON_LEFT_FRINGE) ? Qleft_fringe : Qright_fringe; 5110 posn = Qright_fringe;
5097 rx = 0; 5111 rx = 0;
5098 dx = wx; 5112 dx = wx;
5099 wx = (part == ON_LEFT_FRINGE) ? 0 : window_box_width (w, TEXT_AREA); 5113 wx = (window_box_width (w, LEFT_MARGIN_AREA)
5100 if (part == ON_RIGHT_FRINGE) 5114 + window_box_width (w, TEXT_AREA)
5101 dx -= (window_box_width (w, LEFT_MARGIN_AREA) 5115 + (WINDOW_HAS_FRINGES_OUTSIDE_MARGINS (w)
5102 + window_box_width (w, TEXT_AREA) 5116 ? window_box_width (w, RIGHT_MARGIN_AREA)
5103 + (WINDOW_HAS_FRINGES_OUTSIDE_MARGINS (w) 5117 : 0));
5104 ? window_box_width (w, RIGHT_MARGIN_AREA) 5118 dx -= wx;
5105 : 0)); 5119 }
5106 else if (!WINDOW_HAS_FRINGES_OUTSIDE_MARGINS (w)) 5120 else
5107 dx -= window_box_width (w, LEFT_MARGIN_AREA); 5121 {
5122 /* Note: We have no special posn for part == ON_SCROLL_BAR. */
5123 wx = max (WINDOW_LEFT_MARGIN_WIDTH (w), wx);
5108 } 5124 }
5109 5125
5110 if (textpos < 0) 5126 if (textpos < 0)
@@ -5113,7 +5129,6 @@ make_lispy_position (f, x, y, time)
5113 struct display_pos p; 5129 struct display_pos p;
5114 int dx2, dy2; 5130 int dx2, dy2;
5115 int width2, height2; 5131 int width2, height2;
5116 wx = max (WINDOW_LEFT_MARGIN_WIDTH (w), wx);
5117 string2 = buffer_posn_from_coords (w, &wx, &wy, &p, 5132 string2 = buffer_posn_from_coords (w, &wx, &wy, &p,
5118 &object2, &dx2, &dy2, 5133 &object2, &dx2, &dy2,
5119 &width2, &height2); 5134 &width2, &height2);