diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 5 | ||||
| -rw-r--r-- | src/macterm.c | 44 |
2 files changed, 30 insertions, 19 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 0659b8499b0..c66a1ea6dd9 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,8 @@ | |||
| 1 | 2007-06-28 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> | ||
| 2 | |||
| 3 | * macterm.c [USE_MAC_TSM] (mac_handle_text_input_event): | ||
| 4 | Check WINDOWP before using XWINDOW. Consolidate return statements. | ||
| 5 | |||
| 1 | 2007-06-27 Richard Stallman <rms@gnu.org> | 6 | 2007-06-27 Richard Stallman <rms@gnu.org> |
| 2 | 7 | ||
| 3 | * fileio.c (syms_of_fileio) <after-insert-file-functions>: Doc fix. | 8 | * fileio.c (syms_of_fileio) <after-insert-file-functions>: Doc fix. |
diff --git a/src/macterm.c b/src/macterm.c index 52709c757f2..906f946388c 100644 --- a/src/macterm.c +++ b/src/macterm.c | |||
| @@ -11164,7 +11164,7 @@ mac_handle_text_input_event (next_handler, event, data) | |||
| 11164 | EventRef event; | 11164 | EventRef event; |
| 11165 | void *data; | 11165 | void *data; |
| 11166 | { | 11166 | { |
| 11167 | OSStatus result, err = noErr; | 11167 | OSStatus err, result; |
| 11168 | Lisp_Object id_key = Qnil; | 11168 | Lisp_Object id_key = Qnil; |
| 11169 | int num_params; | 11169 | int num_params; |
| 11170 | const EventParamName *names; | 11170 | const EventParamName *names; |
| @@ -11225,6 +11225,7 @@ mac_handle_text_input_event (next_handler, event, data) | |||
| 11225 | SetEventParameter (event, EVENT_PARAM_TEXT_INPUT_SEQUENCE_NUMBER, | 11225 | SetEventParameter (event, EVENT_PARAM_TEXT_INPUT_SEQUENCE_NUMBER, |
| 11226 | typeUInt32, sizeof (UInt32), &seqno_uaia); | 11226 | typeUInt32, sizeof (UInt32), &seqno_uaia); |
| 11227 | seqno_uaia++; | 11227 | seqno_uaia++; |
| 11228 | result = noErr; | ||
| 11228 | break; | 11229 | break; |
| 11229 | 11230 | ||
| 11230 | case kEventTextInputUnicodeForKeyEvent: | 11231 | case kEventTextInputUnicodeForKeyEvent: |
| @@ -11242,7 +11243,7 @@ mac_handle_text_input_event (next_handler, event, data) | |||
| 11242 | if (err == noErr && mac_mapped_modifiers (modifiers)) | 11243 | if (err == noErr && mac_mapped_modifiers (modifiers)) |
| 11243 | /* There're mapped modifier keys. Process it in | 11244 | /* There're mapped modifier keys. Process it in |
| 11244 | do_keystroke. */ | 11245 | do_keystroke. */ |
| 11245 | return eventNotHandledErr; | 11246 | break; |
| 11246 | if (err == noErr) | 11247 | if (err == noErr) |
| 11247 | err = GetEventParameter (kbd_event, kEventParamKeyUnicodes, | 11248 | err = GetEventParameter (kbd_event, kEventParamKeyUnicodes, |
| 11248 | typeUnicodeText, NULL, 0, &actual_size, | 11249 | typeUnicodeText, NULL, 0, &actual_size, |
| @@ -11281,16 +11282,20 @@ mac_handle_text_input_event (next_handler, event, data) | |||
| 11281 | XSETFRAME (read_socket_inev->frame_or_window, f); | 11282 | XSETFRAME (read_socket_inev->frame_or_window, f); |
| 11282 | } | 11283 | } |
| 11283 | } | 11284 | } |
| 11284 | return eventNotHandledErr; | 11285 | break; |
| 11285 | } | 11286 | } |
| 11286 | } | 11287 | } |
| 11288 | if (err == noErr) | ||
| 11289 | { | ||
| 11290 | /* Non-ASCII keystrokes without mapped modifiers are | ||
| 11291 | processed at the Lisp level. */ | ||
| 11292 | id_key = Qunicode_for_key_event; | ||
| 11293 | num_params = sizeof (names_ufke) / sizeof (names_ufke[0]); | ||
| 11294 | names = names_ufke; | ||
| 11295 | types = types_ufke; | ||
| 11296 | result = noErr; | ||
| 11297 | } | ||
| 11287 | } | 11298 | } |
| 11288 | /* Non-ASCII keystrokes without mapped modifiers are processed | ||
| 11289 | at the Lisp level. */ | ||
| 11290 | id_key = Qunicode_for_key_event; | ||
| 11291 | num_params = sizeof (names_ufke) / sizeof (names_ufke[0]); | ||
| 11292 | names = names_ufke; | ||
| 11293 | types = types_ufke; | ||
| 11294 | break; | 11299 | break; |
| 11295 | 11300 | ||
| 11296 | case kEventTextInputOffsetToPos: | 11301 | case kEventTextInputOffsetToPos: |
| @@ -11300,22 +11305,24 @@ mac_handle_text_input_event (next_handler, event, data) | |||
| 11300 | Point p; | 11305 | Point p; |
| 11301 | 11306 | ||
| 11302 | if (!OVERLAYP (Vmac_ts_active_input_overlay)) | 11307 | if (!OVERLAYP (Vmac_ts_active_input_overlay)) |
| 11303 | return eventNotHandledErr; | 11308 | break; |
| 11304 | 11309 | ||
| 11305 | /* Strictly speaking, this is not always correct because | 11310 | /* Strictly speaking, this is not always correct because |
| 11306 | previous events may change some states about display. */ | 11311 | previous events may change some states about display. */ |
| 11307 | if (NILP (Foverlay_get (Vmac_ts_active_input_overlay, Qbefore_string))) | 11312 | if (!NILP (Foverlay_get (Vmac_ts_active_input_overlay, Qbefore_string))) |
| 11313 | { | ||
| 11314 | /* Active input area is displayed around the current point. */ | ||
| 11315 | f = SELECTED_FRAME (); | ||
| 11316 | w = XWINDOW (f->selected_window); | ||
| 11317 | } | ||
| 11318 | else if (WINDOWP (echo_area_window)) | ||
| 11308 | { | 11319 | { |
| 11309 | /* Active input area is displayed in the echo area. */ | 11320 | /* Active input area is displayed in the echo area. */ |
| 11310 | w = XWINDOW (echo_area_window); | 11321 | w = XWINDOW (echo_area_window); |
| 11311 | f = WINDOW_XFRAME (w); | 11322 | f = WINDOW_XFRAME (w); |
| 11312 | } | 11323 | } |
| 11313 | else | 11324 | else |
| 11314 | { | 11325 | break; |
| 11315 | /* Active input area is displayed around the current point. */ | ||
| 11316 | f = SELECTED_FRAME (); | ||
| 11317 | w = XWINDOW (f->selected_window); | ||
| 11318 | } | ||
| 11319 | 11326 | ||
| 11320 | p.h = (WINDOW_TO_FRAME_PIXEL_X (w, w->cursor.x) | 11327 | p.h = (WINDOW_TO_FRAME_PIXEL_X (w, w->cursor.x) |
| 11321 | + WINDOW_LEFT_FRINGE_WIDTH (w) | 11328 | + WINDOW_LEFT_FRINGE_WIDTH (w) |
| @@ -11325,6 +11332,8 @@ mac_handle_text_input_event (next_handler, event, data) | |||
| 11325 | + f->top_pos + FRAME_OUTER_TO_INNER_DIFF_Y (f)); | 11332 | + f->top_pos + FRAME_OUTER_TO_INNER_DIFF_Y (f)); |
| 11326 | err = SetEventParameter (event, kEventParamTextInputReplyPoint, | 11333 | err = SetEventParameter (event, kEventParamTextInputReplyPoint, |
| 11327 | typeQDPoint, sizeof (typeQDPoint), &p); | 11334 | typeQDPoint, sizeof (typeQDPoint), &p); |
| 11335 | if (err == noErr) | ||
| 11336 | result = noErr; | ||
| 11328 | } | 11337 | } |
| 11329 | break; | 11338 | break; |
| 11330 | 11339 | ||
| @@ -11336,9 +11345,6 @@ mac_handle_text_input_event (next_handler, event, data) | |||
| 11336 | err = mac_store_event_ref_as_apple_event (0, 0, Qtext_input, id_key, | 11345 | err = mac_store_event_ref_as_apple_event (0, 0, Qtext_input, id_key, |
| 11337 | event, num_params, | 11346 | event, num_params, |
| 11338 | names, types); | 11347 | names, types); |
| 11339 | if (err == noErr) | ||
| 11340 | result = noErr; | ||
| 11341 | |||
| 11342 | return result; | 11348 | return result; |
| 11343 | } | 11349 | } |
| 11344 | #endif | 11350 | #endif |