diff options
Diffstat (limited to 'src/keyboard.c')
| -rw-r--r-- | src/keyboard.c | 38 |
1 files changed, 27 insertions, 11 deletions
diff --git a/src/keyboard.c b/src/keyboard.c index 786e97d7d89..4937cc445bd 100644 --- a/src/keyboard.c +++ b/src/keyboard.c | |||
| @@ -5144,20 +5144,37 @@ make_lispy_position (f, x, y, time) | |||
| 5144 | &object, &dx, &dy, &width, &height); | 5144 | &object, &dx, &dy, &width, &height); |
| 5145 | if (STRINGP (string)) | 5145 | if (STRINGP (string)) |
| 5146 | string_info = Fcons (string, make_number (charpos)); | 5146 | string_info = Fcons (string, make_number (charpos)); |
| 5147 | if (part == ON_LEFT_MARGIN) | ||
| 5148 | wx = 0; | ||
| 5149 | else | ||
| 5150 | wx = window_box_right_offset (w, TEXT_AREA) - 1; | ||
| 5151 | } | ||
| 5152 | else if (part == ON_LEFT_FRINGE) | ||
| 5153 | { | ||
| 5154 | posn = Qleft_fringe; | ||
| 5155 | rx = 0; | ||
| 5156 | dx = wx; | ||
| 5157 | wx = (WINDOW_HAS_FRINGES_OUTSIDE_MARGINS (w) | ||
| 5158 | ? 0 | ||
| 5159 | : window_box_width (w, LEFT_MARGIN_AREA)); | ||
| 5160 | dx -= wx; | ||
| 5147 | } | 5161 | } |
| 5148 | else if (part == ON_LEFT_FRINGE || part == ON_RIGHT_FRINGE) | 5162 | else if (part == ON_RIGHT_FRINGE) |
| 5149 | { | 5163 | { |
| 5150 | posn = (part == ON_LEFT_FRINGE) ? Qleft_fringe : Qright_fringe; | 5164 | posn = Qright_fringe; |
| 5151 | rx = 0; | 5165 | rx = 0; |
| 5152 | dx = wx; | 5166 | dx = wx; |
| 5153 | if (part == ON_RIGHT_FRINGE) | 5167 | wx = (window_box_width (w, LEFT_MARGIN_AREA) |
| 5154 | dx -= (window_box_width (w, LEFT_MARGIN_AREA) | 5168 | + window_box_width (w, TEXT_AREA) |
| 5155 | + window_box_width (w, TEXT_AREA) | 5169 | + (WINDOW_HAS_FRINGES_OUTSIDE_MARGINS (w) |
| 5156 | + (WINDOW_HAS_FRINGES_OUTSIDE_MARGINS (w) | 5170 | ? window_box_width (w, RIGHT_MARGIN_AREA) |
| 5157 | ? window_box_width (w, RIGHT_MARGIN_AREA) | 5171 | : 0)); |
| 5158 | : 0)); | 5172 | dx -= wx; |
| 5159 | else if (!WINDOW_HAS_FRINGES_OUTSIDE_MARGINS (w)) | 5173 | } |
| 5160 | dx -= window_box_width (w, LEFT_MARGIN_AREA); | 5174 | else |
| 5175 | { | ||
| 5176 | /* Note: We have no special posn for part == ON_SCROLL_BAR. */ | ||
| 5177 | wx = max (WINDOW_LEFT_MARGIN_WIDTH (w), wx); | ||
| 5161 | } | 5178 | } |
| 5162 | 5179 | ||
| 5163 | if (textpos < 0) | 5180 | if (textpos < 0) |
| @@ -5166,7 +5183,6 @@ make_lispy_position (f, x, y, time) | |||
| 5166 | struct display_pos p; | 5183 | struct display_pos p; |
| 5167 | int dx2, dy2; | 5184 | int dx2, dy2; |
| 5168 | int width2, height2; | 5185 | int width2, height2; |
| 5169 | wx = max (WINDOW_LEFT_MARGIN_WIDTH (w), wx); | ||
| 5170 | string2 = buffer_posn_from_coords (w, &wx, &wy, &p, | 5186 | string2 = buffer_posn_from_coords (w, &wx, &wy, &p, |
| 5171 | &object2, &dx2, &dy2, | 5187 | &object2, &dx2, &dy2, |
| 5172 | &width2, &height2); | 5188 | &width2, &height2); |