diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/keyboard.c | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/src/keyboard.c b/src/keyboard.c index baf313c7a62..522cfc3ccf2 100644 --- a/src/keyboard.c +++ b/src/keyboard.c | |||
| @@ -1138,8 +1138,23 @@ void | |||
| 1138 | pop_kboard () | 1138 | pop_kboard () |
| 1139 | { | 1139 | { |
| 1140 | #ifdef MULTI_KBOARD | 1140 | #ifdef MULTI_KBOARD |
| 1141 | struct device *d; | ||
| 1141 | struct kboard_stack *p = kboard_stack; | 1142 | struct kboard_stack *p = kboard_stack; |
| 1142 | current_kboard = p->kboard; | 1143 | int ok = 0; |
| 1144 | current_kboard = NULL; | ||
| 1145 | for (d = device_list; d; d = d->next_device) | ||
| 1146 | { | ||
| 1147 | if (d->kboard == p->kboard) | ||
| 1148 | { | ||
| 1149 | current_kboard = p->kboard; | ||
| 1150 | break; | ||
| 1151 | } | ||
| 1152 | } | ||
| 1153 | if (current_kboard == NULL) | ||
| 1154 | { | ||
| 1155 | /* The display we remembered has been deleted. */ | ||
| 1156 | current_kboard = FRAME_KBOARD (SELECTED_FRAME ()); | ||
| 1157 | } | ||
| 1143 | kboard_stack = p->next; | 1158 | kboard_stack = p->next; |
| 1144 | xfree (p); | 1159 | xfree (p); |
| 1145 | #endif | 1160 | #endif |
| @@ -1177,11 +1192,11 @@ static Lisp_Object | |||
| 1177 | restore_kboard_configuration (was_locked) | 1192 | restore_kboard_configuration (was_locked) |
| 1178 | Lisp_Object was_locked; | 1193 | Lisp_Object was_locked; |
| 1179 | { | 1194 | { |
| 1180 | pop_kboard (); | ||
| 1181 | if (NILP (was_locked)) | 1195 | if (NILP (was_locked)) |
| 1182 | any_kboard_state (); | 1196 | any_kboard_state (); |
| 1183 | else | 1197 | else |
| 1184 | single_kboard_state (); | 1198 | single_kboard_state (); |
| 1199 | pop_kboard (); | ||
| 1185 | return Qnil; | 1200 | return Qnil; |
| 1186 | } | 1201 | } |
| 1187 | 1202 | ||