X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=gtk%2Fxoptions.c;h=3df99a77db9d5d1a4c584e6e47a03d3d35aaf0d7;hb=2eb3eb048b16f2ffd1f1c8dad3987871b0f9bd72;hp=31598bd7e2b0c0f02a02d846bbdd4a5eaf019c2f;hpb=4435d1ff1d234516df1e10d54e1617a94039858b;p=xboard.git diff --git a/gtk/xoptions.c b/gtk/xoptions.c index 31598bd..3df99a7 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 Free Software Foundation, Inc. + * Copyright 2000, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Free Software Foundation, Inc. * ------------------------------------------------------------------------ * * GNU XBoard is free software: you can redistribute it and/or modify @@ -52,7 +52,7 @@ extern char *getenv(); #include #include #ifdef OSXAPP -# include +# include #endif #include "common.h" @@ -244,6 +244,12 @@ SetWidgetLabel (Option *opt, char *buf) } void +SetComboChoice (Option *opt, int n) +{ + gtk_combo_box_set_active(opt->handle, n); +} + +void SetDialogTitle (DialogClass dlg, char *title) { gtk_window_set_title(GTK_WINDOW(shells[dlg]), title); @@ -502,6 +508,8 @@ TypeInProc (GtkWidget *widget, GdkEventKey *event, gpointer gdata) shiftState = event->state & GDK_SHIFT_MASK; controlState = event->state & GDK_CONTROL_MASK; switch(event->keyval) { + case 'e': return (controlState && IcsHist( 5, opt, dlg)); + case 'h': return (controlState && IcsHist( 8, opt, dlg)); case 'n': return (controlState && IcsHist(14, opt, dlg)); case 'o': return (controlState && IcsHist(15, opt, dlg)); case GDK_Tab: IcsHist(10, opt, dlg); break; @@ -528,11 +536,11 @@ HighlightText (Option *opt, int from, int to, Boolean highlight) if(!(opt->min & INIT)) { opt->min |= INIT; // each memo its own init flag! gtk_text_buffer_create_tag(opt->handle, "highlight", "background", "yellow", NULL); - gtk_text_buffer_create_tag(opt->handle, "normal", "background", "white", NULL); } gtk_text_buffer_get_iter_at_offset(opt->handle, &start, from); gtk_text_buffer_get_iter_at_offset(opt->handle, &end, to); - gtk_text_buffer_apply_tag_by_name(opt->handle, highlight ? "highlight" : "normal", &start, &end); + if(highlight) gtk_text_buffer_apply_tag_by_name(opt->handle, "highlight", &start, &end); + else gtk_text_buffer_remove_tag_by_name(opt->handle, "highlight", &start, &end); } static char **names; @@ -1016,7 +1024,9 @@ void BrowseGTK(GtkWidget *widget, gpointer gdata) gtkfilter = gtk_file_filter_new(); gtkfilter_all = gtk_file_filter_new(); - char fileext[MSG_SIZ]; + char fileext[MSG_SIZ], *filter = currentOption[opt_i].textValue; + + StartDir(filter, NULL); // change to start directory for this file type /* select file or folder depending on option_type */ if (currentOption[opt_i].type == PathName) @@ -1060,9 +1070,10 @@ void BrowseGTK(GtkWidget *widget, gpointer gdata) filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog)); entry = currentOption[opt_i].handle; gtk_entry_set_text (GTK_ENTRY (entry), filename); + StartDir(filter, filename); // back to original, and remember this one g_free (filename); - } + else StartDir(filter, ""); // change back to original directory gtk_widget_destroy (dialog); dialog = NULL; } @@ -1430,7 +1441,7 @@ if(appData.debugMode) printf("n=%d, h=%d, w=%d\n",n,height,width); g_signal_connect(label, "button-press-event", G_CALLBACK(MemoEvent), (gpointer) &option[i]); gtk_widget_set_sensitive(label, TRUE); } - Pack(hbox, table, label, left, left+3, top, 0); + Pack(hbox, table, label, left, left+r, top, 0); break; case SaveButton: case Button: @@ -1563,12 +1574,16 @@ if(appData.debugMode) printf("n=%d, h=%d, w=%d\n",n,height,width); top--; msg = _(option[i].name); // write name on the menu button #ifndef OSXAPP - if(tinyLayout) { strcpy(def, msg); def[tinyLayout] = NULLCHAR; msg = def; } // clip menu text to keep menu bar small + if(tinyLayout) { // clip menu text to keep menu bar small + int clip = tinyLayout + 1; + strcpy(def, msg + (msg[clip-1] == '_')); + def[clip] = NULLCHAR; msg = def; + } #endif // XtSetArg(args[j], XtNmenuName, XtNewString(option[i].name)); j++; // XtSetArg(args[j], XtNlabel, msg); j++; option[i].handle = (void*) - (menuButton = gtk_menu_item_new_with_label(msg)); + (menuButton = gtk_menu_item_new_with_mnemonic(msg)); gtk_widget_show(menuButton); option[i].textValue = (char*) (menu = CreateMenuPopup(option + i, i + 256*dlgNr, -1)); gtk_menu_item_set_submenu(GTK_MENU_ITEM (menuButton), menu); @@ -1627,6 +1642,11 @@ if(appData.debugMode) printf("n=%d, h=%d, w=%d\n",n,height,width); } gtk_table_resize(GTK_TABLE(table), top+1, r); + if(dlgNr == BoardWindow && appData.fixedSize) { // inhibit sizing + GtkWidget *h = gtk_hbox_new(FALSE, 0); + gtk_box_pack_start (GTK_BOX (h), table, TRUE, FALSE, 2); + table = h; + } if(pane) gtk_box_pack_start (GTK_BOX (pane), table, expandable, TRUE, 0); else