mirror of
https://github.com/fltk/fltk.git
synced 2026-06-01 06:14:28 +08:00
Fixes fltk-options setting wrong keys
This commit is contained in:
@@ -87,6 +87,7 @@ typedef struct {
|
|||||||
const char* text;
|
const char* text;
|
||||||
Fl::Fl_Option id;
|
Fl::Fl_Option id;
|
||||||
const char* name;
|
const char* name;
|
||||||
|
const char* prefs_name;
|
||||||
bool bool_default;
|
bool bool_default;
|
||||||
const char* brief;
|
const char* brief;
|
||||||
const char* tooltip;
|
const char* tooltip;
|
||||||
@@ -99,13 +100,13 @@ typedef struct {
|
|||||||
Fo_Option_Descr g_option_list[] = {
|
Fo_Option_Descr g_option_list[] = {
|
||||||
{ FO_HEADLINE, "Keyboard Focus Options" },
|
{ FO_HEADLINE, "Keyboard Focus Options" },
|
||||||
{ FO_OPTION_BOOL, "Visible Keyboard Focus:",
|
{ FO_OPTION_BOOL, "Visible Keyboard Focus:",
|
||||||
Fl::OPTION_VISIBLE_FOCUS, "OPTION_VISIBLE_FOCUS", true,
|
Fl::OPTION_VISIBLE_FOCUS, "OPTION_VISIBLE_FOCUS", "VisibleFocus", true,
|
||||||
"Draw a dotted rectangle in widget with keyboard focus.",
|
"Draw a dotted rectangle in widget with keyboard focus.",
|
||||||
"If visible focus is switched on, FLTK will draw a dotted rectangle inside "
|
"If visible focus is switched on, FLTK will draw a dotted rectangle inside "
|
||||||
"the widget that will receive the next keystroke. If switched off, no such "
|
"the widget that will receive the next keystroke. If switched off, no such "
|
||||||
"indicator will be drawn and keyboard navigation is disabled." },
|
"indicator will be drawn and keyboard navigation is disabled." },
|
||||||
{ FO_OPTION_BOOL, "Arrow Keys move Focus:",
|
{ FO_OPTION_BOOL, "Arrow Keys move Focus:",
|
||||||
Fl::OPTION_ARROW_FOCUS, "OPTION_ARROW_FOCUS", false,
|
Fl::OPTION_ARROW_FOCUS, "OPTION_ARROW_FOCUS", "ArrowFocus", false,
|
||||||
"Arrow keys will move focus beyond text input field.",
|
"Arrow keys will move focus beyond text input field.",
|
||||||
"When switched on, moving the text cursor beyond the start or end of the "
|
"When switched on, moving the text cursor beyond the start or end of the "
|
||||||
"text in a text widget will change focus to the next widget. When switched "
|
"text in a text widget will change focus to the next widget. When switched "
|
||||||
@@ -114,35 +115,35 @@ Fo_Option_Descr g_option_list[] = {
|
|||||||
"behavior of FLTK 1.1." },
|
"behavior of FLTK 1.1." },
|
||||||
{ FO_HEADLINE, "Tooltip Options" },
|
{ FO_HEADLINE, "Tooltip Options" },
|
||||||
{ FO_OPTION_BOOL, "Show Tooltips:",
|
{ FO_OPTION_BOOL, "Show Tooltips:",
|
||||||
Fl::OPTION_SHOW_TOOLTIPS, "OPTION_SHOW_TOOLTIPS", true,
|
Fl::OPTION_SHOW_TOOLTIPS, "OPTION_SHOW_TOOLTIPS", "ShowTooltips", true,
|
||||||
"Show or hide tooltips.",
|
"Show or hide tooltips.",
|
||||||
"If tooltips are enabled, hovering the mouse over a widget with a tooltip "
|
"If tooltips are enabled, hovering the mouse over a widget with a tooltip "
|
||||||
"text will open a little tooltip window until the mouse leaves the widget. "
|
"text will open a little tooltip window until the mouse leaves the widget. "
|
||||||
"If disabled, no tooltip is shown." },
|
"If disabled, no tooltip is shown." },
|
||||||
{ FO_HEADLINE, "Drag And Drop Options" },
|
{ FO_HEADLINE, "Drag And Drop Options" },
|
||||||
{ FO_OPTION_BOOL, "Allow dragging Text:",
|
{ FO_OPTION_BOOL, "Allow dragging Text:",
|
||||||
Fl::OPTION_DND_TEXT, "OPTION_DND_TEXT", true,
|
Fl::OPTION_DND_TEXT, "OPTION_DND_TEXT", "DNDText", true,
|
||||||
"User can drag text from FLTK into other apps.",
|
"User can drag text from FLTK into other apps.",
|
||||||
"If text drag-and-drop is enabled, the user can select and drag text from "
|
"If text drag-and-drop is enabled, the user can select and drag text from "
|
||||||
"any text widget. If disabled, no dragging is possible, however dropping "
|
"any text widget. If disabled, no dragging is possible, however dropping "
|
||||||
"text from other applications still works." },
|
"text from other applications still works." },
|
||||||
{ FO_HEADLINE, "Native File Chooser Options" },
|
{ FO_HEADLINE, "Native File Chooser Options" },
|
||||||
{ FO_OPTION_BOOL, "Native File Chooser uses GTK:",
|
{ FO_OPTION_BOOL, "Native File Chooser uses GTK:",
|
||||||
Fl::OPTION_FNFC_USES_GTK, "OPTION_FNFC_USES_GTK", true,
|
Fl::OPTION_FNFC_USES_GTK, "OPTION_FNFC_USES_GTK", "FNFCUsesGTK", true,
|
||||||
"Use GTK file chooser instead of FLTK if available.",
|
"Use GTK file chooser instead of FLTK if available.",
|
||||||
"If 'Native File Chooser uses GTK' is enabled, the Fl_Native_File_Chooser "
|
"If 'Native File Chooser uses GTK' is enabled, the Fl_Native_File_Chooser "
|
||||||
"class calls the GTK open/save file dialogs when they are available on the "
|
"class calls the GTK open/save file dialogs when they are available on the "
|
||||||
"platfom. If disabled, the Fl_Native_File_Chooser class always uses FLTK's "
|
"platfom. If disabled, the Fl_Native_File_Chooser class always uses FLTK's "
|
||||||
"own file dialog (i.e., Fl_File_Chooser) even if GTK is available." },
|
"own file dialog (i.e., Fl_File_Chooser) even if GTK is available." },
|
||||||
{ FO_OPTION_BOOL, "Native File Chooser uses Zenity:",
|
{ FO_OPTION_BOOL, "Native File Chooser uses Zenity:",
|
||||||
Fl::OPTION_FNFC_USES_ZENITY, "OPTION_FNFC_USES_ZENITY", true,
|
Fl::OPTION_FNFC_USES_ZENITY, "OPTION_FNFC_USES_ZENITY", "UseZenity", true,
|
||||||
"Use Zenity file chooser instead of FLTK if available.",
|
"Use Zenity file chooser instead of FLTK if available.",
|
||||||
"Meaningful for the Wayland/X11 platform only. When switched on (default),"
|
"Meaningful for the Wayland/X11 platform only. When switched on (default),"
|
||||||
"the library uses a Zenity-based file dialog. When switched off, the GTK"
|
"the library uses a Zenity-based file dialog. When switched off, the GTK"
|
||||||
"file dialog is used instead." },
|
"file dialog is used instead." },
|
||||||
{ FO_HEADLINE, "Print dialog Options" },
|
{ FO_HEADLINE, "Print dialog Options" },
|
||||||
{ FO_OPTION_BOOL, "Print dialog uses GTK:",
|
{ FO_OPTION_BOOL, "Print dialog uses GTK:",
|
||||||
Fl::OPTION_PRINTER_USES_GTK, "OPTION_PRINTER_USES_GTK", true,
|
Fl::OPTION_PRINTER_USES_GTK, "OPTION_PRINTER_USES_GTK", "PrintUsesGTK", true,
|
||||||
"Use GTK printer dialog instead of FLTK if available.",
|
"Use GTK printer dialog instead of FLTK if available.",
|
||||||
"If 'Print dialog uses GTK' is enabled, the Fl_Printer class calls the "
|
"If 'Print dialog uses GTK' is enabled, the Fl_Printer class calls the "
|
||||||
"GTK print dialog when it's available on the platfom. If disabled, the "
|
"GTK print dialog when it's available on the platfom. If disabled, the "
|
||||||
@@ -150,7 +151,7 @@ Fo_Option_Descr g_option_list[] = {
|
|||||||
"if GTK is available." },
|
"if GTK is available." },
|
||||||
{ FO_HEADLINE, "Scaling Factor Options" },
|
{ FO_HEADLINE, "Scaling Factor Options" },
|
||||||
{ FO_OPTION_BOOL, "Transiently show scaling factor:",
|
{ FO_OPTION_BOOL, "Transiently show scaling factor:",
|
||||||
Fl::OPTION_SHOW_SCALING, "OPTION_SHOW_SCALING", true,
|
Fl::OPTION_SHOW_SCALING, "OPTION_SHOW_SCALING", "ShowZoomFactor", true,
|
||||||
"Show the zoom factor in a transient popup window.",
|
"Show the zoom factor in a transient popup window.",
|
||||||
"If 'Transiently show scaling factor' is enabled, the library shows in a "
|
"If 'Transiently show scaling factor' is enabled, the library shows in a "
|
||||||
"transient popup window the display scaling factor value when it is "
|
"transient popup window the display scaling factor value when it is "
|
||||||
@@ -181,7 +182,7 @@ bool write_permission(Fo_Context ctx) {
|
|||||||
*/
|
*/
|
||||||
void set_option(Fo_Context ctx, const char *name, int value) {
|
void set_option(Fo_Context ctx, const char *name, int value) {
|
||||||
enum Fl_Preferences::Root context =
|
enum Fl_Preferences::Root context =
|
||||||
(ctx==FO_SYSTEM) ? Fl_Preferences::SYSTEM_L : Fl_Preferences::USER_L;
|
(ctx==FO_SYSTEM) ? Fl_Preferences::CORE_SYSTEM : Fl_Preferences::CORE_USER;
|
||||||
Fl_Preferences prefs(context, "fltk.org", "fltk");
|
Fl_Preferences prefs(context, "fltk.org", "fltk");
|
||||||
Fl_Preferences options(prefs, "options");
|
Fl_Preferences options(prefs, "options");
|
||||||
if (value==-1)
|
if (value==-1)
|
||||||
@@ -277,13 +278,13 @@ void list_options(char cmd) {
|
|||||||
if (opt->name) {
|
if (opt->name) {
|
||||||
printf("%-24s", opt->name);
|
printf("%-24s", opt->name);
|
||||||
if (cmd == 'S' || cmd == 0) {
|
if (cmd == 'S' || cmd == 0) {
|
||||||
int value = get_option(FO_SYSTEM, opt->name);
|
int value = get_option(FO_SYSTEM, opt->prefs_name);
|
||||||
printf(" system:%2d", value);
|
printf(" system:%2d", value);
|
||||||
}
|
}
|
||||||
if (cmd == 0)
|
if (cmd == 0)
|
||||||
printf(",");
|
printf(",");
|
||||||
if (cmd == 'U' || cmd == 0) {
|
if (cmd == 'U' || cmd == 0) {
|
||||||
int value = get_option(FO_USER, opt->name);
|
int value = get_option(FO_USER, opt->prefs_name);
|
||||||
printf(" user:%2d", value);
|
printf(" user:%2d", value);
|
||||||
}
|
}
|
||||||
printf("\n");
|
printf("\n");
|
||||||
@@ -303,17 +304,17 @@ void handle_option(Fo_Context ctx, const char *name, int ival) {
|
|||||||
for (opt = g_option_list; opt->type!=FO_END_OF_LIST; ++opt) {
|
for (opt = g_option_list; opt->type!=FO_END_OF_LIST; ++opt) {
|
||||||
if ( opt->name && (fl_ascii_strcasecmp(opt->name, name) == 0) ) {
|
if ( opt->name && (fl_ascii_strcasecmp(opt->name, name) == 0) ) {
|
||||||
if (ival == FO_PRINT_VALUE) {
|
if (ival == FO_PRINT_VALUE) {
|
||||||
int value = get_option(ctx, opt->name);
|
int value = get_option(ctx, opt->prefs_name);
|
||||||
if (g_verbose)
|
if (g_verbose)
|
||||||
printf("Current value for %s option %s is %d\n", ctx_name, name, value);
|
printf("Current value for %s option %s is %d\n", ctx_name, name, value);
|
||||||
else
|
else
|
||||||
printf("%d\n", value);
|
printf("%d\n", value);
|
||||||
} else if (ival ==-1) {
|
} else if (ival ==-1) {
|
||||||
if (g_verbose) printf("Reset %s option %s to default\n", ctx_name, name);
|
if (g_verbose) printf("Reset %s option %s to default\n", ctx_name, name);
|
||||||
clear_option(ctx, opt->name);
|
clear_option(ctx, opt->prefs_name);
|
||||||
} else {
|
} else {
|
||||||
if (g_verbose) printf("Set %s option %s to %d\n", ctx_name, name, ival);
|
if (g_verbose) printf("Set %s option %s to %d\n", ctx_name, name, ival);
|
||||||
set_option(ctx, opt->name, ival);
|
set_option(ctx, opt->prefs_name, ival);
|
||||||
}
|
}
|
||||||
if ( (ival != FO_PRINT_VALUE) && !write_permission(ctx) ) {
|
if ( (ival != FO_PRINT_VALUE) && !write_permission(ctx) ) {
|
||||||
fprintf(stderr, "ERROR: No write permission for %s options\n", ctx_name);
|
fprintf(stderr, "ERROR: No write permission for %s options\n", ctx_name);
|
||||||
@@ -474,7 +475,7 @@ void set_system_option_cb(Fl_Widget* w, void* user_data) {
|
|||||||
const Fl_Menu_Item* mi = choice->mvalue();
|
const Fl_Menu_Item* mi = choice->mvalue();
|
||||||
if (!mi) return;
|
if (!mi) return;
|
||||||
int value = (int)mi->argument();
|
int value = (int)mi->argument();
|
||||||
set_option(FO_SYSTEM, opt->name, value);
|
set_option(FO_SYSTEM, opt->prefs_name, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Called when a boolenan user option is changed.
|
/** Called when a boolenan user option is changed.
|
||||||
@@ -485,7 +486,7 @@ void set_user_option_cb(Fl_Widget* w, void* user_data) {
|
|||||||
const Fl_Menu_Item* mi = choice->mvalue();
|
const Fl_Menu_Item* mi = choice->mvalue();
|
||||||
if (!mi) return;
|
if (!mi) return;
|
||||||
int value = (int)mi->argument();
|
int value = (int)mi->argument();
|
||||||
set_option(FO_USER, opt->name, value);
|
set_option(FO_USER, opt->prefs_name, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Add an option group to the pack group.
|
/** Add an option group to the pack group.
|
||||||
@@ -556,7 +557,7 @@ void add_option(Fl_Pack* pack, Fo_Option_Descr* opt) {
|
|||||||
system_choice->align(FL_ALIGN_TOP);
|
system_choice->align(FL_ALIGN_TOP);
|
||||||
system_choice->callback((Fl_Callback*)set_system_option_cb, (void*)opt);
|
system_choice->callback((Fl_Callback*)set_system_option_cb, (void*)opt);
|
||||||
system_choice->menu(bool_option_menu);
|
system_choice->menu(bool_option_menu);
|
||||||
switch (get_option(FO_SYSTEM, opt->name)) {
|
switch (get_option(FO_SYSTEM, opt->prefs_name)) {
|
||||||
case 0: system_choice->value(0); break;
|
case 0: system_choice->value(0); break;
|
||||||
case 1: system_choice->value(1); break;
|
case 1: system_choice->value(1); break;
|
||||||
default: system_choice->value(2); break;
|
default: system_choice->value(2); break;
|
||||||
@@ -569,7 +570,7 @@ void add_option(Fl_Pack* pack, Fo_Option_Descr* opt) {
|
|||||||
user_choice->align(FL_ALIGN_TOP);
|
user_choice->align(FL_ALIGN_TOP);
|
||||||
user_choice->callback((Fl_Callback*)set_user_option_cb, (void*)opt);
|
user_choice->callback((Fl_Callback*)set_user_option_cb, (void*)opt);
|
||||||
user_choice->menu(bool_option_menu);
|
user_choice->menu(bool_option_menu);
|
||||||
switch (get_option(FO_USER, opt->name)) {
|
switch (get_option(FO_USER, opt->prefs_name)) {
|
||||||
case 0: user_choice->value(0); break;
|
case 0: user_choice->value(0); break;
|
||||||
case 1: user_choice->value(1); break;
|
case 1: user_choice->value(1); break;
|
||||||
default: user_choice->value(2); break;
|
default: user_choice->value(2); break;
|
||||||
|
|||||||
Reference in New Issue
Block a user