X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=gtk%2Fxoptions.c;h=525d00bfadf2e12292e7ab7b52eee0e3f62911ea;hb=ebd7f78161504e46896f7d96bb41e29714b2fd53;hp=3df99a77db9d5d1a4c584e6e47a03d3d35aaf0d7;hpb=2eb3eb048b16f2ffd1f1c8dad3987871b0f9bd72;p=xboard.git diff --git a/gtk/xoptions.c b/gtk/xoptions.c index 3df99a7..525d00b 100644 --- a/gtk/xoptions.c +++ b/gtk/xoptions.c @@ -1,7 +1,7 @@ /* * xoptions.c -- Move list window, part of X front end for XBoard * - * Copyright 2000, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Free Software Foundation, Inc. + * Copyright 2000, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Free Software Foundation, Inc. * ------------------------------------------------------------------------ * * GNU XBoard is free software: you can redistribute it and/or modify @@ -48,11 +48,10 @@ extern char *getenv(); #include #include -#include #include #include #ifdef OSXAPP -# include +# include #endif #include "common.h" @@ -450,10 +449,24 @@ CreateMenuPopup (Option *opt, int n, int def) gtk_accelerator_parse(mb[i].accel, &accelerator_key, &accelerator_mods); #ifdef OSXAPP - if(accelerator_mods & GDK_CONTROL_MASK) { // in OSX use Meta where Linux uses Ctrl - accelerator_mods &= ~GDK_CONTROL_MASK; // clear Ctrl flag - accelerator_mods |= GDK_META_MASK; // set Meta flag - } + if(accelerator_mods & GDK_CONTROL_MASK && + accelerator_key != 'v' && // don't use Cmd+V as this is a OS text edit command + accelerator_key != 'c' && // and Cmd+C + accelerator_key != 'x' && // and CMD+X + accelerator_key != 'a' // and CMD+A + ) { // in OSX use Meta (Cmd) where Linux uses Ctrl + accelerator_mods &= ~GDK_CONTROL_MASK; // clear Ctrl flag + accelerator_mods |= GDK_META_MASK; // set Meta flag + } else if (accelerator_mods & GDK_CONTROL_MASK && + accelerator_key == 'v' || + accelerator_key == 'c' || + accelerator_key == 'x' || + accelerator_key == 'a' + ) { // For these conflicting commands, lets make them alt-cmd + accelerator_mods &= ~GDK_CONTROL_MASK; // clear Ctrl flag + accelerator_mods |= GDK_META_MASK; + accelerator_mods |= GDK_MOD1_MASK; + } #endif gtk_widget_add_accelerator (GTK_WIDGET(entry), "activate",GtkAccelerators, accelerator_key, accelerator_mods, GTK_ACCEL_VISIBLE); @@ -1457,10 +1470,12 @@ if(appData.debugMode) printf("n=%d, h=%d, w=%d\n",n,height,width); /* set button color on new variant dialog */ if(option[i].textValue) { static char *b = "Bold"; + char *v, *p = NULL, n = option[i].value; + if(n >= 0) v = VariantName(n), p = strstr(first.variants, v); gdk_color_parse( option[i].textValue, &color ); gtk_widget_modify_bg ( GTK_WIDGET(button), GTK_STATE_NORMAL, &color ); gtk_widget_set_sensitive(button, option[i].value >= 0 && (appData.noChessProgram - || strstr(first.variants, VariantName(option[i].value)))); + || p && (!*v || strlen(p) == strlen(v) || p[strlen(v)] == ','))); if(engineVariant[100] ? !strcmp(engineVariant+100, option[i].name) : gameInfo.variant ? option[i].value == gameInfo.variant : !strcmp(option[i].name, "Normal")) SetWidgetFont(gtk_bin_get_child(GTK_BIN(button)), &b);