summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Melcher <github@matthiasm.com>2023-12-28 15:43:21 +0100
committerMatthias Melcher <github@matthiasm.com>2023-12-28 15:43:21 +0100
commita09c75e9bc8da17fe82fdba047e9bde2771093c1 (patch)
tree0d2a5afd25e4dfd0c106bc6c10ac00a755c53e76
parent30f2ec8185788b6e9a260d77077a2ef2ebed53b2 (diff)
Adds Fl_Input RMB menu translation to test/preferences
This also updates the RMB menu labels before every popup so that changing the labels after creating the widgets still reflects that change correctly.
-rw-r--r--src/Fl_Input.cxx10
-rw-r--r--src/Fl_Text_Display.cxx11
-rw-r--r--test/preferences.fl16
3 files changed, 23 insertions, 14 deletions
diff --git a/src/Fl_Input.cxx b/src/Fl_Input.cxx
index 3fa2c707b..5a225a64e 100644
--- a/src/Fl_Input.cxx
+++ b/src/Fl_Input.cxx
@@ -524,7 +524,12 @@ int Fl_Input::handle_rmb() {
insert_position(word_start(newpos), word_end(newpos));
}
}
- if (readonly()) { // give only the menu options that make sense
+ // keep the menu labels current
+ rmb_menu[0].label(Fl_Input::cut_menu_text);
+ rmb_menu[1].label(Fl_Input::copy_menu_text);
+ rmb_menu[2].label(Fl_Input::paste_menu_text);
+ // give only the menu options that make sense
+ if (readonly()) {
rmb_menu[0].deactivate(); // cut
rmb_menu[2].deactivate(); // paste
} else {
@@ -763,9 +768,6 @@ int Fl_Input::handle(int event) {
*/
Fl_Input::Fl_Input(int X, int Y, int W, int H, const char *l)
: Fl_Input_(X, Y, W, H, l) {
- if (!rmb_menu[0].label()) rmb_menu[0].label(Fl_Input::cut_menu_text);
- if (!rmb_menu[1].label()) rmb_menu[1].label(Fl_Input::copy_menu_text);
- if (!rmb_menu[2].label()) rmb_menu[2].label(Fl_Input::paste_menu_text);
}
diff --git a/src/Fl_Text_Display.cxx b/src/Fl_Text_Display.cxx
index 66a514f68..a7c96d689 100644
--- a/src/Fl_Text_Display.cxx
+++ b/src/Fl_Text_Display.cxx
@@ -196,10 +196,6 @@ Fl_Text_Display::Fl_Text_Display(int X, int Y, int W, int H, const char* l)
set_flag(SHORTCUT_LABEL);
clear_flag(NEEDS_KEYBOARD);
- if (!rmb_menu[0].label()) rmb_menu[0].label(Fl_Input::cut_menu_text);
- if (!rmb_menu[1].label()) rmb_menu[1].label(Fl_Input::copy_menu_text);
- if (!rmb_menu[2].label()) rmb_menu[2].label(Fl_Input::paste_menu_text);
-
end();
}
@@ -4104,7 +4100,12 @@ int Fl_Text_Display::handle_rmb(int readonly) {
txtbuf->select(txtbuf->word_start(newpos), txtbuf->word_end(newpos));
}
}
- if (readonly) { // give only the menu options that make sense
+ // keep the menu labels current
+ rmb_menu[0].label(Fl_Input::cut_menu_text);
+ rmb_menu[1].label(Fl_Input::copy_menu_text);
+ rmb_menu[2].label(Fl_Input::paste_menu_text);
+ // give only the menu options that make sense
+ if (readonly) {
rmb_menu[0].deactivate(); // cut
rmb_menu[2].deactivate(); // paste
} else {
diff --git a/test/preferences.fl b/test/preferences.fl
index d61c580d8..c305ab94f 100644
--- a/test/preferences.fl
+++ b/test/preferences.fl
@@ -66,6 +66,8 @@ for systems that don't have GNU libintl library.} open return_type {const char*}
{ "Bread:", "Brot:" },
{ "Breakfast:", "Frühstück:" },
{ "Cancel", "Abbrechen" },
+ { "Copy", "Kopieren" },
+ { "Cut", "Ausschneiden" },
{ "Drink:", "Getränk:" },
{ "English", "Englisch" },
{ "German", "Deutsch" },
@@ -75,6 +77,7 @@ for systems that don't have GNU libintl library.} open return_type {const char*}
{ "NY Times", "Der Spiegel" },
{ "Newspaper:", "Tageszeitung:" },
{ "OK", "OK" },
+ { "Paste", "Einfügen" },
{ "Please restart the app to use your new language setting.",
"Bitte starten Sie die App erneut um Ihre Spracheinstellung zu nutzen." },
{ "Wear:", "Schuhwerk:" },
@@ -103,7 +106,7 @@ for systems that don't have GNU libintl library.} open return_type {const char*}
{ "with milk", "mit Milch" },
};
int lang = g_language;
-int i, n = 38;
+int i, n = 41;
const char *found = 0L;
// As this is just a minimal demo, I did not implement binary search.
@@ -132,7 +135,11 @@ Fl::delete_widget(myWindow);} {}
Function {} {open return_type int
} {
- code {readLanguagePrefs();} {}
+ code {readLanguagePrefs();
+Fl_Input::cut_menu_text = gettext("Cut");
+Fl_Input::copy_menu_text = gettext("Copy");
+Fl_Input::paste_menu_text = gettext("Paste");} {selected
+ }
Fl_Window myWindow {
label {My Preferences}
callback closeWindowCB open
@@ -140,7 +147,7 @@ Function {} {open return_type int
} {
Fl_Button {} {
label Cancel
- callback closeWindowCB selected
+ callback closeWindowCB
xywh {118 316 90 24}
}
Fl_Button {} {
@@ -470,6 +477,5 @@ Function {writePrefs()} {open return_type void
// unsigned int size_of_bed = sizeof( bed ); // size of Fl_Preferences 'bed'
// eat.set( "binFoo", (void*)&hex, sizeof( unsigned int ) );
// eat.set( "SizeOfBed", (int)size_of_bed );
- // eat.set( "Prefs_Bed", (void*)&bed, sizeof( bed ) );} {selected
- }
+ // eat.set( "Prefs_Bed", (void*)&bed, sizeof( bed ) );} {}
}