Disable checkboxes for primary selection when relevant
diff --git a/vncviewer/OptionsDialog.cxx b/vncviewer/OptionsDialog.cxx
index 2f9df9c..b018c95 100644
--- a/vncviewer/OptionsDialog.cxx
+++ b/vncviewer/OptionsDialog.cxx
@@ -700,6 +700,7 @@
                                                          CHECK_MIN_WIDTH,
                                                          CHECK_HEIGHT,
                                                          _("Accept clipboard from server")));
+  acceptClipboardCheckbox->callback(handleClipboard, this);
   ty += CHECK_HEIGHT + TIGHT_MARGIN;
 
 #if !defined(WIN32) && !defined(__APPLE__)
@@ -714,10 +715,11 @@
                                                        CHECK_MIN_WIDTH,
                                                        CHECK_HEIGHT,
                                                        _("Send clipboard to server")));
+  sendClipboardCheckbox->callback(handleClipboard, this);
   ty += CHECK_HEIGHT + TIGHT_MARGIN;
 
 #if !defined(WIN32) && !defined(__APPLE__)
-  sendPrimaryCheckbox = new Fl_Check_Button(LBLRIGHT(tx, ty,
+  sendPrimaryCheckbox = new Fl_Check_Button(LBLRIGHT(tx + INDENT, ty,
                                                      CHECK_MIN_WIDTH,
                                                      CHECK_HEIGHT,
                                                      _("Send primary selection as clipboard")));
@@ -876,6 +878,22 @@
   }
 }
 
+void OptionsDialog::handleClipboard(Fl_Widget *widget, void *data)
+{
+#if !defined(WIN32) && !defined(__APPLE__)
+  OptionsDialog *dialog = (OptionsDialog*)data;
+
+  if (dialog->acceptClipboardCheckbox->value())
+    dialog->setPrimaryCheckbox->activate();
+  else
+    dialog->setPrimaryCheckbox->deactivate();
+  if (dialog->sendClipboardCheckbox->value())
+    dialog->sendPrimaryCheckbox->activate();
+  else
+    dialog->sendPrimaryCheckbox->deactivate();
+#endif
+}
+
 void OptionsDialog::handleCancel(Fl_Widget *widget, void *data)
 {
   OptionsDialog *dialog = (OptionsDialog*)data;
diff --git a/vncviewer/OptionsDialog.h b/vncviewer/OptionsDialog.h
index 6984c72..c177560 100644
--- a/vncviewer/OptionsDialog.h
+++ b/vncviewer/OptionsDialog.h
@@ -64,6 +64,8 @@
 
   static void handleDesktopSize(Fl_Widget *widget, void *data);
 
+  static void handleClipboard(Fl_Widget *widget, void *data);
+
   static void handleCancel(Fl_Widget *widget, void *data);
   static void handleOK(Fl_Widget *widget, void *data);