And another bit missing from the settings changes: pterm's platform
[sgt/putty] / unix / pterm.c
index 402a4e7..5a48dd0 100644 (file)
@@ -91,14 +91,14 @@ char *x_get_default(const char *key)
 char *platform_default_s(const char *name)
 {
     if (!strcmp(name, "Font"))
-       return "fixed";        /* COE_NORMAL works badly in an xterm */
+       return "fixed";
     return NULL;
 }
 
 int platform_default_i(const char *name, int def)
 {
     if (!strcmp(name, "CloseOnExit"))
-       return COE_ALWAYS;             /* COE_NORMAL works badly in an xterm */
+       return 2;  /* maps to FORCE_ON after painful rearrangement :-( */
     return def;
 }
 
@@ -151,7 +151,7 @@ int font_dimension(void *frontend, int which)/* 0 for width, 1 for height */
  * mouse or a means of faking it, and there is no need to switch
  * buttons around at all.
  */
-Mouse_Button translate_button(void *frontend, Mouse_Button button)
+static Mouse_Button translate_button(Mouse_Button button)
 {
     /* struct gui_data *inst = (struct gui_data *)frontend; */
 
@@ -937,7 +937,8 @@ gint button_event(GtkWidget *widget, GdkEventButton *event, gpointer data)
     x = (event->x - inst->cfg.window_border) / inst->font_width;
     y = (event->y - inst->cfg.window_border) / inst->font_height;
 
-    term_mouse(inst->term, button, act, x, y, shift, ctrl, alt);
+    term_mouse(inst->term, button, translate_button(button), act,
+              x, y, shift, ctrl, alt);
 
     return TRUE;
 }
@@ -964,7 +965,8 @@ gint motion_event(GtkWidget *widget, GdkEventMotion *event, gpointer data)
     x = (event->x - inst->cfg.window_border) / inst->font_width;
     y = (event->y - inst->cfg.window_border) / inst->font_height;
 
-    term_mouse(inst->term, button, MA_DRAG, x, y, shift, ctrl, alt);
+    term_mouse(inst->term, button, translate_button(button), MA_DRAG,
+              x, y, shift, ctrl, alt);
 
     return TRUE;
 }
@@ -989,8 +991,8 @@ void done_with_pty(struct gui_data *inst)
         * Terminate now, if the Close On Exit setting is
         * appropriate.
         */
-       if (inst->cfg.close_on_exit == COE_ALWAYS ||
-           (inst->cfg.close_on_exit == COE_NORMAL && clean))
+       if (inst->cfg.close_on_exit == FORCE_ON ||
+           (inst->cfg.close_on_exit == AUTO && clean))
            exit(0);
 
        /*
@@ -1540,17 +1542,19 @@ void do_text_internal(Context ctx, int x, int y, char *text, int len,
 
     int nfg, nbg, t, fontid, shadow, rlen, widefactor;
 
-    nfg = 2 * ((attr & ATTR_FGMASK) >> ATTR_FGSHIFT);
-    nbg = 2 * ((attr & ATTR_BGMASK) >> ATTR_BGSHIFT);
+    nfg = ((attr & ATTR_FGMASK) >> ATTR_FGSHIFT);
+    nfg = 2 * (nfg & 0xF) + (nfg & 0x10 ? 1 : 0);
+    nbg = ((attr & ATTR_BGMASK) >> ATTR_BGSHIFT);
+    nbg = 2 * (nbg & 0xF) + (nbg & 0x10 ? 1 : 0);
     if (attr & ATTR_REVERSE) {
        t = nfg;
        nfg = nbg;
        nbg = t;
     }
     if (inst->cfg.bold_colour && (attr & ATTR_BOLD))
-       nfg++;
+       nfg |= 1;
     if (inst->cfg.bold_colour && (attr & ATTR_BLINK))
-       nbg++;
+       nbg |= 1;
     if (attr & TATTR_ACTCURS) {
        nfg = NCOLOURS-2;
        nbg = NCOLOURS-1;