Change the term_mouse interface a little so that it gets passed
[u/mdw/putty] / mac / macterm.c
index b24e3d4..61dc4b4 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: macterm.c,v 1.52 2003/01/18 20:09:21 ben Exp $ */
+/* $Id: macterm.c,v 1.54 2003/01/25 16:16:44 ben Exp $ */
 /*
  * Copyright (c) 1999 Simon Tatham
  * Copyright (c) 1999, 2002 Ben Harris
@@ -110,8 +110,23 @@ static RoutineDescriptor do_text_for_device_upp =
 void mac_startsession(Session *s)
 {
     char *errmsg;
+    int i;
 
     init_ucs(s);
+
+    /*
+     * Select protocol. This is farmed out into a table in a
+     * separate file to enable an ssh-free variant.
+     */
+    s->back = NULL;
+    for (i = 0; backends[i].backend != NULL; i++)
+       if (backends[i].protocol == s->cfg.protocol) {
+           s->back = backends[i].backend;
+           break;
+       }
+    if (s->back == NULL)
+       fatalbox("Unsupported protocol number found");
+
     /* XXX: Own storage management? */
     if (HAVE_COLOR_QD())
        s->window = GetNewCWindow(wTerminal, NULL, (WindowPtr)-1);
@@ -403,6 +418,7 @@ void mac_adjusttermmenus(WindowPtr window) {
     menu = GetMenuHandle(mFile);
     DisableItem(menu, iSave); /* XXX enable if modified */
     EnableItem(menu, iSaveAs);
+    EnableItem(menu, iDuplicate);
     menu = GetMenuHandle(mEdit);
     EnableItem(menu, 0);
     DisableItem(menu, iUndo);
@@ -486,8 +502,8 @@ static void text_click(Session *s, EventRecord *event) {
                   lastact == MA_3CLK ? MA_CLICK : MA_NOTHING);
     else
        lastact = MA_CLICK;
-    /* Fake right button with shift key */
-    term_mouse(s->term, event->modifiers & shiftKey ? MBT_RIGHT : MBT_LEFT,
+    term_mouse(s->term, MBT_LEFT,
+              event->modifiers & shiftKey ? MBT_EXTEND : MBT_SELECT,
               lastact, col, row, event->modifiers & shiftKey,
               event->modifiers & controlKey, event->modifiers & optionKey);
     lastsess = s;
@@ -497,8 +513,8 @@ static void text_click(Session *s, EventRecord *event) {
        GetMouse(&localwhere);
        col = PTOCC(localwhere.h);
        row = PTOCR(localwhere.v);
-       term_mouse(s->term,
-                  event->modifiers & shiftKey ? MBT_RIGHT : MBT_LEFT,
+       term_mouse(s->term, MBT_LEFT, 
+                  event->modifiers & shiftKey ? MBT_EXTEND : MBT_SELECT,
                   MA_DRAG, col, row, event->modifiers & shiftKey,
                   event->modifiers & controlKey,
                   event->modifiers & optionKey);
@@ -507,25 +523,13 @@ static void text_click(Session *s, EventRecord *event) {
        else if (row < 0)
            term_scroll(s->term, 0, row);
     }
-    term_mouse(s->term, event->modifiers & shiftKey ? MBT_RIGHT : MBT_LEFT,
+    term_mouse(s->term, MBT_LEFT,
+              event->modifiers & shiftKey ? MBT_EXTEND : MBT_SELECT,
               MA_RELEASE, col, row, event->modifiers & shiftKey,
               event->modifiers & controlKey, event->modifiers & optionKey);
     lastwhen = TickCount();
 }
 
-Mouse_Button translate_button(void *frontend, Mouse_Button button)
-{
-
-    switch (button) {
-      case MBT_LEFT:
-       return MBT_SELECT;
-      case MBT_RIGHT:
-       return MBT_EXTEND;
-      default:
-       return 0;
-    }
-}
-
 void write_clip(void *cookie, wchar_t *data, int len, int must_deselect) {
     
     /*