Disable entries instead of shuffling memory around

Less risk for bugs this way.
diff --git a/vncviewer/Viewport.cxx b/vncviewer/Viewport.cxx
index 918730e..463523f 100644
--- a/vncviewer/Viewport.cxx
+++ b/vncviewer/Viewport.cxx
@@ -1109,31 +1109,20 @@
       if (menuAltKey)
         items[i].flags |= FL_MENU_VALUE;
       break;
+    case ID_MENUKEY:
+      // The menu key needs to have its fields updated, or the entries hidden
+      if (!menuKeySym)
+        items[i].flags |= FL_MENU_INACTIVE | FL_MENU_INVISIBLE;
+      else if (!(items[i].flags & FL_MENU_INVISIBLE)) {
+        char sendMenuKey[64];
+        snprintf(sendMenuKey, 64, _("Send %s"), (const char *)menuKey);
+        free((void*)items[i].text);
+        items[i].text = strdup(sendMenuKey);
+      }
+      break;
     }
   }
 
-  // The menu key needs to have its fields updated, or the entries removed
-  for (i = 0;i < sizeof(items)/sizeof(items[0]);i++) {
-    char sendMenuKey[64];
-
-    if ((intptr_t)items[i].user_data_ != ID_MENUKEY)
-      continue;
-
-    if (!menuKeySym) {
-      memmove(items + i, items + i + 1,
-              sizeof(items) - (sizeof(items[0]) * (i+1)));
-      i--;
-      continue;
-    }
-
-    if (items[i].flags & FL_MENU_INVISIBLE)
-      continue;
-
-    snprintf(sendMenuKey, 64, _("Send %s"), (const char *)menuKey);
-    free((void*)items[i].text);
-    items[i].text = strdup(sendMenuKey);
-  }
-
   contextMenu->copy(items);
 }