diff options
| author | Kim F. Storm | 2005-10-11 15:07:28 +0000 |
|---|---|---|
| committer | Kim F. Storm | 2005-10-11 15:07:28 +0000 |
| commit | a65fc2c39764e81adc7359ce18e95f1990285b81 (patch) | |
| tree | ab1015bfb22286015864515100e52a2e6eabe2ce /src | |
| parent | 4d1add72eb8cf8a01a13d087855545625e3205ec (diff) | |
| download | emacs-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.c | 39 |
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); |