X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=gtk%2Fxoptions.c;h=90a45eae19dc5a8c1ed9e41d0688a0bbe7bc4ba5;hb=e80441fef1fb20a575aec0ffa9d54902b5729444;hp=fae7d9f381c000a0c5d4002808f56c42044131ed;hpb=983466ab2643579135ec6b14102ba1c95c336678;p=xboard.git diff --git a/gtk/xoptions.c b/gtk/xoptions.c index fae7d9f..90a45ea 100644 --- a/gtk/xoptions.c +++ b/gtk/xoptions.c @@ -317,8 +317,13 @@ void ScrollToCursor (Option *opt, int caretPos) { static GtkTextIter iter; + static GtkTextMark *mark; + if(!mark) mark = gtk_text_mark_new(NULL, 0); gtk_text_buffer_get_iter_at_offset((GtkTextBuffer *) opt->handle, &iter, caretPos); - gtk_text_view_scroll_to_iter((GtkTextView *) opt->textValue, &iter, 0.0, 0, 0.5, 0.5); + gtk_text_buffer_add_mark((GtkTextBuffer *) opt->handle, mark, &iter); + gtk_text_view_scroll_to_mark((GtkTextView *) opt->textValue, mark, 0.0, 0, 0.5, 0.5); +// gtk_text_view_scroll_to_iter((GtkTextView *) opt->textValue, &iter, 0.0, 0, 0.5, 0.5); + gtk_text_buffer_delete_mark((GtkTextBuffer *) opt->handle, mark); } int @@ -1119,7 +1124,7 @@ GenericPopUp (Option *option, char *title, DialogClass dlgNr, DialogClass parent // if(n > 50) width = 4; else if(n>24) width = 2; else width = 1; width = n / 20 + 1; height = n / width + 1; -printf("n=%d, h=%d, w=%d\n",n,height,width); +if(appData.debugMode) printf("n=%d, h=%d, w=%d\n",n,height,width); // if(n && (currentOption[n-1].type == Button || currentOption[n-1].type == SaveButton)) currentOption[n].min = SAME_ROW; // OK on same line currentOption[n].type = EndMark; currentOption[n].target = NULL; // delimit list by callback-less end mark } @@ -1336,8 +1341,8 @@ printf("n=%d, h=%d, w=%d\n",n,height,width); if(option[i].textValue) { gdk_color_parse( option[i].textValue, &color ); gtk_widget_modify_bg ( GTK_WIDGET(button), GTK_STATE_NORMAL, &color ); - gtk_widget_set_sensitive(button, appData.noChessProgram || option[i].value < 0 - || strstr(first.variants, VariantName(option[i].value))); + gtk_widget_set_sensitive(button, option[i].value >= 0 && (appData.noChessProgram + || strstr(first.variants, VariantName(option[i].value)))); } Pack(hbox, table, button, left, left+1, top, 0); @@ -1525,11 +1530,11 @@ printf("n=%d, h=%d, w=%d\n",n,height,width); (gpointer)(intptr_t) dlgNr); shellUp[dlgNr]++; - if(dlgNr && wp[dlgNr] && wp[dlgNr]->width > 0) { // if persistent window-info available, reposition + if(dlgNr && wp[dlgNr]) { // if persistent window-info available, reposition + if(wp[dlgNr]->x > 0 && wp[dlgNr]->y > 0) gtk_window_move(GTK_WINDOW(dialog), wp[dlgNr]->x, wp[dlgNr]->y); -//printf("moved %d to (%d,%d)\n", dlgNr, wp[dlgNr]->x, wp[dlgNr]->y); + if(wp[dlgNr]->width > 0 && wp[dlgNr]->height > 0) gtk_window_resize(GTK_WINDOW(dialog), wp[dlgNr]->width, wp[dlgNr]->height); -//printf("resized %d to %dx%d\n", dlgNr, wp[dlgNr]->width, wp[dlgNr]->height); } return 1; // tells caller he must do initialization (e.g. add specific event handlers) @@ -1571,13 +1576,8 @@ SendText (int n) void SetInsertPos (Option *opt, int pos) { -#ifdef TODO_GTK - Arg args[16]; - XtSetArg(args[0], XtNinsertPosition, pos); - XtSetValues(opt->handle, args, 1); -// SetFocus(opt->handle, shells[InputBoxDlg], NULL, False); // No idea why this does not work, and the following is needed: -// XSetInputFocus(xDisplay, XtWindow(opt->handle), RevertToPointerRoot, CurrentTime); -#endif + if(opt->value > 80) ScrollToCursor(opt, pos); + else gtk_editable_set_position(GTK_EDITABLE(opt->handle), pos); } void