mirror of
https://github.com/rkd77/elinks.git
synced 2025-06-30 22:19:29 -04:00
Drop EVENT_TEXTAREA, use EVENT_RESIZE instead
When returning from an external program, unblock_itrm_x in the slave process will send a resize event to the master process for the slave terminal. In handle_interlink_event, when we receive this resize event, we can check whether we need to call textarea_edit.
This commit is contained in:
parent
a66f6f8c90
commit
92abd48405
@ -460,8 +460,6 @@ dialog_func(struct window *win, struct term_event *ev)
|
|||||||
case EVENT_ABORT:
|
case EVENT_ABORT:
|
||||||
dialog_ev_abort(dlg_data);
|
dialog_ev_abort(dlg_data);
|
||||||
break;
|
break;
|
||||||
case EVENT_TEXTAREA:
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -281,7 +281,6 @@ hierbox_dialog_event_handler(struct dialog_data *dlg_data)
|
|||||||
case EVENT_RESIZE:
|
case EVENT_RESIZE:
|
||||||
case EVENT_REDRAW:
|
case EVENT_REDRAW:
|
||||||
case EVENT_MOUSE:
|
case EVENT_MOUSE:
|
||||||
case EVENT_TEXTAREA:
|
|
||||||
return EVENT_NOT_PROCESSED;
|
return EVENT_NOT_PROCESSED;
|
||||||
|
|
||||||
case EVENT_ABORT:
|
case EVENT_ABORT:
|
||||||
|
@ -729,7 +729,6 @@ kbd_listbox(struct dialog_data *dlg_data, struct widget_data *widget_data)
|
|||||||
case EVENT_REDRAW:
|
case EVENT_REDRAW:
|
||||||
case EVENT_MOUSE:
|
case EVENT_MOUSE:
|
||||||
case EVENT_ABORT:
|
case EVENT_ABORT:
|
||||||
case EVENT_TEXTAREA:
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1006,8 +1006,6 @@ menu_handler(struct window *win, struct term_event *ev)
|
|||||||
case EVENT_ABORT:
|
case EVENT_ABORT:
|
||||||
free_menu_items(menu->items);
|
free_menu_items(menu->items);
|
||||||
break;
|
break;
|
||||||
case EVENT_TEXTAREA:
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1345,7 +1343,6 @@ mainmenu_handler(struct window *win, struct term_event *ev)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case EVENT_ABORT:
|
case EVENT_ABORT:
|
||||||
case EVENT_TEXTAREA:
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1283,8 +1283,6 @@ tabwin_func(struct window *tab, struct term_event *ev)
|
|||||||
assert(ses->tab == get_current_tab(ses->tab->term));
|
assert(ses->tab == get_current_tab(ses->tab->term));
|
||||||
send_event(ses, ev);
|
send_event(ses, ev);
|
||||||
break;
|
break;
|
||||||
case EVENT_TEXTAREA:
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -119,7 +119,6 @@ term_send_event(struct terminal *term, struct term_event *ev)
|
|||||||
case EVENT_MOUSE:
|
case EVENT_MOUSE:
|
||||||
case EVENT_KBD:
|
case EVENT_KBD:
|
||||||
case EVENT_ABORT:
|
case EVENT_ABORT:
|
||||||
case EVENT_TEXTAREA:
|
|
||||||
assert(!list_empty(term->windows));
|
assert(!list_empty(term->windows));
|
||||||
if_assert_failed break;
|
if_assert_failed break;
|
||||||
|
|
||||||
@ -273,6 +272,13 @@ handle_interlink_event(struct terminal *term, struct interlink_event *ilev)
|
|||||||
ilev->info.size.width,
|
ilev->info.size.width,
|
||||||
ilev->info.size.height);
|
ilev->info.size.height);
|
||||||
term_send_event(term, &tev);
|
term_send_event(term, &tev);
|
||||||
|
|
||||||
|
/* If textarea_data is set and the terminal is not blocked,
|
||||||
|
* then this resize event must be the result of exiting the
|
||||||
|
* external editor. */
|
||||||
|
if (term->textarea_data && term->blocked == -1)
|
||||||
|
textarea_edit(1, term, NULL, NULL, NULL);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case EVENT_MOUSE:
|
case EVENT_MOUSE:
|
||||||
@ -445,10 +451,6 @@ invalid_utf8_start_byte:
|
|||||||
case EVENT_ABORT:
|
case EVENT_ABORT:
|
||||||
destroy_terminal(term);
|
destroy_terminal(term);
|
||||||
return 0;
|
return 0;
|
||||||
case EVENT_TEXTAREA:
|
|
||||||
if (term->textarea_data)
|
|
||||||
textarea_edit(1, term, NULL, NULL, NULL);
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
ERROR(gettext("Bad event %d"), ilev->ev);
|
ERROR(gettext("Bad event %d"), ilev->ev);
|
||||||
|
@ -20,7 +20,6 @@ enum term_event_type {
|
|||||||
EVENT_REDRAW,
|
EVENT_REDRAW,
|
||||||
EVENT_RESIZE,
|
EVENT_RESIZE,
|
||||||
EVENT_ABORT,
|
EVENT_ABORT,
|
||||||
EVENT_TEXTAREA,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/** An event received from a terminal. This type can be changed
|
/** An event received from a terminal. This type can be changed
|
||||||
|
@ -352,16 +352,12 @@ handle_trm(int std_in, int std_out, int sock_in, int sock_out, int ctl_in,
|
|||||||
static void
|
static void
|
||||||
unblock_itrm_x(void *h)
|
unblock_itrm_x(void *h)
|
||||||
{
|
{
|
||||||
struct interlink_event ev;
|
|
||||||
|
|
||||||
close_handle(h);
|
close_handle(h);
|
||||||
if (!ditrm) return;
|
if (!ditrm) return;
|
||||||
unblock_itrm();
|
unblock_itrm();
|
||||||
resize_terminal();
|
|
||||||
|
|
||||||
memset(&ev, 0, sizeof(ev));
|
/* Note: External editor support depends on this resize event. */
|
||||||
ev.ev = EVENT_TEXTAREA;
|
resize_terminal();
|
||||||
itrm_queue_event(ditrm, (char *) &ev, sizeof(ev));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -152,7 +152,6 @@ empty_window_handler(struct window *win, struct term_event *ev)
|
|||||||
return;
|
return;
|
||||||
case EVENT_KBD:
|
case EVENT_KBD:
|
||||||
case EVENT_MOUSE:
|
case EVENT_MOUSE:
|
||||||
case EVENT_TEXTAREA:
|
|
||||||
/* Silence compiler warnings */
|
/* Silence compiler warnings */
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user