Diff

Differences From Artifact [3625fcf32d]:

To Artifact [f375dc0bf0]:


50
51
52
53
54
55
56


57
58
59
60
61
62
63
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65







+
+







    guint term_paste_idle_id;
    GdkAtom compound_text_atom;
    int alt_keycode;
    char wintitle[sizeof(((Config *)0)->wintitle)];
    char icontitle[sizeof(((Config *)0)->wintitle)];
    int master_fd, master_func_id, exited;
    void *ldisc;
    Backend *back;
    void *backhandle;
};

static struct gui_data the_inst;
static struct gui_data *inst = &the_inst;   /* so we always write `inst->' */
static int send_raw_mouse;

void ldisc_update(void *frontend, int echo, int edit)
883
884
885
886
887
888
889
890
891


892
893
894
895
896
897
898
885
886
887
888
889
890
891


892
893
894
895
896
897
898
899
900







-
-
+
+








    if (inst->master_fd >= 0) {
	pty_close();
	inst->master_fd = -1;
	gtk_input_remove(inst->master_func_id);
    }

    if (!inst->exited && back->exitcode(backhandle) >= 0) {
	int exitcode = back->exitcode(backhandle);
    if (!inst->exited && inst->back->exitcode(inst->backhandle) >= 0) {
	int exitcode = inst->back->exitcode(inst->backhandle);
	int clean;

	clean = WIFEXITED(exitcode) && (WEXITSTATUS(exitcode) == 0);

	/*
	 * Terminate now, if the Close On Exit setting is
	 * appropriate.
937
938
939
940
941
942
943
944

945
946
947
948
949
950
951
939
940
941
942
943
944
945

946
947
948
949
950
951
952
953







-
+







	exit(0);
}

gint timer_func(gpointer data)
{
    struct gui_data *inst = (struct gui_data *)data;

    if (back->exitcode(backhandle) >= 0) {
    if (inst->back->exitcode(inst->backhandle) >= 0) {
	/*
	 * The primary child process died. We could keep the
	 * terminal open for remaining subprocesses to output to,
	 * but conventional wisdom seems to feel that that's the
	 * Wrong Thing for an xterm-alike, so we bail out now
	 * (though we don't necessarily _close_ the window,
	 * depending on the state of Close On Exit). This would be
1958
1959
1960
1961
1962
1963
1964
1965
1966


1967
1968

1969
1970
1971
1972

1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1960
1961
1962
1963
1964
1965
1966


1967
1968
1969

1970
1971
1972
1973

1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985







-
-
+
+

-
+



-
+











    inst->blankcursor = make_mouse_ptr(-1);
    make_mouse_ptr(-2);		       /* clean up cursor font */
    inst->currcursor = inst->textcursor;
    show_mouseptr(1);

    term = term_init();

    back = &pty_backend;
    back->init((void *)term, &backhandle, NULL, 0, NULL, 0);
    inst->back = &pty_backend;
    inst->back->init((void *)term, &inst->backhandle, NULL, 0, NULL, 0);

    term_provide_resize_fn(term, back->size, backhandle);
    term_provide_resize_fn(term, inst->back->size, inst->backhandle);

    term_size(term, cfg.height, cfg.width, cfg.savelines);

    inst->ldisc = ldisc_create(term, back, backhandle, inst);
    inst->ldisc = ldisc_create(term, inst->back, inst->backhandle, inst);
    ldisc_send(inst->ldisc, NULL, 0, 0);/* cause ldisc to notice changes */

    inst->master_fd = pty_master_fd;
    inst->exited = FALSE;
    inst->master_func_id = gdk_input_add(pty_master_fd, GDK_INPUT_READ,
					 pty_input_func, inst);

    gtk_main();

    return 0;
}