Diff

Differences From Artifact [7567d777cd]:

To Artifact [01e0de26a7]:


63
64
65
66
67
68
69

70
71
72
73
74
75
76
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77







+







    char icontitle[sizeof(((Config *)0)->wintitle)];
    int master_fd, master_func_id, exited;
    void *ldisc;
    Backend *back;
    void *backhandle;
    Terminal *term;
    void *logctx;
    struct unicode_data ucsdata;
    Config cfg;
};

struct draw_ctx {
    GdkGC *gc;
    struct gui_data *inst;
};
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288




1289
1290
1291
1292
1293
1294
1295
1280
1281
1282
1283
1284
1285
1286



1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297







-
-
-
+
+
+
+







    } else {
	inst->pasteout_data_utf8 = NULL;
	inst->pasteout_data_utf8_len = 0;
    }

    inst->pasteout_data = smalloc(len*6);
    inst->pasteout_data_len = len*6;
    inst->pasteout_data_len = wc_to_mb(line_codepage, 0, data, len,
				       inst->pasteout_data,
				       inst->pasteout_data_len, NULL, NULL);
    inst->pasteout_data_len = wc_to_mb(inst->ucsdata.line_codepage, 0,
				       data, len, inst->pasteout_data,
				       inst->pasteout_data_len,
				       NULL, NULL, NULL);
    if (inst->pasteout_data_len == 0) {
	sfree(inst->pasteout_data);
	inst->pasteout_data = NULL;
    } else {
	inst->pasteout_data =
	    srealloc(inst->pasteout_data, inst->pasteout_data_len);
    }
1392
1393
1394
1395
1396
1397
1398
1399

1400
1401
1402
1403
1404
1405
1406
1394
1395
1396
1397
1398
1399
1400

1401
1402
1403
1404
1405
1406
1407
1408







-
+







    if (inst->pastein_data)
	sfree(inst->pastein_data);

    inst->pastein_data = smalloc(seldata->length * sizeof(wchar_t));
    inst->pastein_data_len = seldata->length;
    inst->pastein_data_len =
	mb_to_wc((seldata->type == inst->utf8_string_atom ?
		  CS_UTF8 : line_codepage),
		  CS_UTF8 : inst->ucsdata.line_codepage),
		 0, seldata->data, seldata->length,
		 inst->pastein_data, inst->pastein_data_len);

    term_do_paste(inst->term);

    if (term_paste_pending(inst->term))
	inst->term_paste_idle_id = gtk_idle_add(idle_paste_func, inst);
1642
1643
1644
1645
1646
1647
1648
1649

1650
1651
1652
1653
1654
1655
1656
1644
1645
1646
1647
1648
1649
1650

1651
1652
1653
1654
1655
1656
1657
1658







-
+







			     x*inst->font_width+inst->cfg.window_border,
			     y*inst->font_height+inst->cfg.window_border+inst->fonts[0]->ascent,
			     gwcs, len*2);
	    sfree(gwcs);
	} else {
	    gcs = smalloc(sizeof(GdkWChar) * (len+1));
	    wc_to_mb(inst->fontinfo[fontid].charset, 0,
		     wcs, len, gcs, len, ".", NULL);
		     wcs, len, gcs, len, ".", NULL, NULL);
	    gdk_draw_text(inst->pixmap, inst->fonts[fontid], gc,
			  x*inst->font_width+inst->cfg.window_border,
			  y*inst->font_height+inst->cfg.window_border+inst->fonts[0]->ascent,
			  gcs, len);
	    sfree(gcs);
	}
	sfree(wcs);
2311
2312
2313
2314
2315
2316
2317
2318


2319
2320
2321
2322
2323
2324
2325
2313
2314
2315
2316
2317
2318
2319

2320
2321
2322
2323
2324
2325
2326
2327
2328







-
+
+








    inst->font_width = gdk_char_width(inst->fonts[0], ' ');
    inst->font_height = inst->fonts[0]->ascent + inst->fonts[0]->descent;

    inst->compound_text_atom = gdk_atom_intern("COMPOUND_TEXT", FALSE);
    inst->utf8_string_atom = gdk_atom_intern("UTF8_STRING", FALSE);

    inst->direct_to_font = init_ucs(inst->cfg.line_codepage, font_charset);
    inst->direct_to_font = init_ucs(&inst->ucsdata,
				    inst->cfg.line_codepage, font_charset);

    inst->window = gtk_window_new(GTK_WINDOW_TOPLEVEL);

    if (inst->cfg.wintitle[0])
	set_title(inst, inst->cfg.wintitle);
    else
	set_title(inst, "pterm");
2411
2412
2413
2414
2415
2416
2417
2418

2419
2420
2421
2422
2423
2424
2425
2414
2415
2416
2417
2418
2419
2420

2421
2422
2423
2424
2425
2426
2427
2428







-
+







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

    inst->term = term_init(&inst->cfg, inst);
    inst->term = term_init(&inst->cfg, &inst->ucsdata, inst);
    inst->logctx = log_init(inst, &inst->cfg);
    term_provide_logctx(inst->term, inst->logctx);

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