Keymap: Change GetModifiedCharacters API to return BStringList.

Simplifies the API and makes ownership semantics clearer.

Change-Id: I59d2e3ef8055253e85943500fb65356762055c54
Reviewed-on: https://review.haiku-os.org/c/haiku/+/8914
Reviewed-by: waddlesplash <[email protected]>
This commit is contained in:
Augustin Cavalier
2025-02-06 00:06:32 +00:00
committed by waddlesplash
parent 3e245f7b20
commit 007126ed6f
5 changed files with 17 additions and 23 deletions
+2 -2
View File
@@ -12,7 +12,7 @@
#include <DataIO.h> #include <DataIO.h>
#include <InterfaceDefs.h> #include <InterfaceDefs.h>
#include <ObjectList.h> #include <StringList.h>
class BKeymap { class BKeymap {
@@ -41,7 +41,7 @@ public:
int32* numBytes) const; int32* numBytes) const;
status_t GetModifiedCharacters(const char* in, status_t GetModifiedCharacters(const char* in,
int32 inModifiers, int32 outModifiers, int32 inModifiers, int32 outModifiers,
BObjectList<const char>* _outList); BStringList& _outList);
const key_map& Map() const { return fKeys; } const key_map& Map() const { return fKeys; }
+4 -4
View File
@@ -561,12 +561,12 @@ TermWindow::_SetupMenu()
BKeymap keymap; BKeymap keymap;
keymap.SetToCurrent(); keymap.SetToCurrent();
BObjectList<const char> unmodified(3, true); BStringList unmodified(3);
if (keymap.GetModifiedCharacters("+", B_SHIFT_KEY, 0, &unmodified) if (keymap.GetModifiedCharacters("+", B_SHIFT_KEY, 0, unmodified)
== B_OK) { == B_OK) {
int32 count = unmodified.CountItems(); int32 count = unmodified.CountStrings();
for (int32 i = 0; i < count; i++) { for (int32 i = 0; i < count; i++) {
uint32 key = BUnicodeChar::FromUTF8(unmodified.ItemAt(i)); uint32 key = BUnicodeChar::FromUTF8(unmodified.StringAt(i));
if (!HasShortcut(key, 0)) { if (!HasShortcut(key, 0)) {
// Add semantic + shortcut, bug #7428 // Add semantic + shortcut, bug #7428
AddShortcut(key, B_COMMAND_KEY, AddShortcut(key, B_COMMAND_KEY,
+4 -4
View File
@@ -687,12 +687,12 @@ BrowserWindow::BrowserWindow(BRect frame, SettingsMessage* appSettings,
BKeymap keymap; BKeymap keymap;
keymap.SetToCurrent(); keymap.SetToCurrent();
BObjectList<const char> unmodified(3, true); BStringList unmodified(3);
if (keymap.GetModifiedCharacters("+", B_SHIFT_KEY, 0, &unmodified) if (keymap.GetModifiedCharacters("+", B_SHIFT_KEY, 0, unmodified)
== B_OK) { == B_OK) {
int32 count = unmodified.CountItems(); int32 count = unmodified.CountStrings();
for (int32 i = 0; i < count; i++) { for (int32 i = 0; i < count; i++) {
uint32 key = BUnicodeChar::FromUTF8(unmodified.ItemAt(i)); uint32 key = BUnicodeChar::FromUTF8(unmodified.StringAt(i));
if (!HasShortcut(key, 0)) { if (!HasShortcut(key, 0)) {
// Add semantic zoom in shortcut, bug #7428 // Add semantic zoom in shortcut, bug #7428
AddShortcut(key, B_COMMAND_KEY, AddShortcut(key, B_COMMAND_KEY,
+3 -9
View File
@@ -455,9 +455,9 @@ BKeymap::GetChars(uint32 keyCode, uint32 modifiers, uint8 activeDeadKey,
*/ */
status_t status_t
BKeymap::GetModifiedCharacters(const char* in, int32 inModifiers, BKeymap::GetModifiedCharacters(const char* in, int32 inModifiers,
int32 outModifiers, BObjectList<const char>* _outList) int32 outModifiers, BStringList& _outList)
{ {
if (in == NULL || *in == '\0' || _outList == NULL) if (in == NULL || *in == '\0')
return B_BAD_VALUE; return B_BAD_VALUE;
for(uint32 i = 0; i < 128; i++) { for(uint32 i = 0; i < 128; i++) {
@@ -470,14 +470,8 @@ BKeymap::GetModifiedCharacters(const char* in, int32 inModifiers,
int32 outOffset = Offset(i, outModifiers); int32 outOffset = Offset(i, outModifiers);
size_t sizeOut = fChars[outOffset++]; size_t sizeOut = fChars[outOffset++];
char* out = (char*)malloc(sizeOut + 1); if (!_outList.Add(BString(fChars + outOffset, sizeOut)))
if (out == NULL)
return B_NO_MEMORY; return B_NO_MEMORY;
memcpy(out, fChars + outOffset, sizeOut);
out[sizeOut] = '\0';
_outList->AddItem((const char*)out);
} }
return B_OK; return B_OK;
+4 -4
View File
@@ -792,12 +792,12 @@ BContainerWindow::Init(const BMessage* message)
BKeymap keymap; BKeymap keymap;
if (keymap.SetToCurrent() == B_OK) { if (keymap.SetToCurrent() == B_OK) {
BObjectList<const char> unmodified(3, true); BStringList unmodified(3);
if (keymap.GetModifiedCharacters("+", B_SHIFT_KEY, 0, &unmodified) if (keymap.GetModifiedCharacters("+", B_SHIFT_KEY, 0, unmodified)
== B_OK) { == B_OK) {
int32 count = unmodified.CountItems(); int32 count = unmodified.CountStrings();
for (int32 i = 0; i < count; i++) { for (int32 i = 0; i < count; i++) {
uint32 key = BUnicodeChar::FromUTF8(unmodified.ItemAt(i)); uint32 key = BUnicodeChar::FromUTF8(unmodified.StringAt(i));
if (!HasShortcut(key, 0)) { if (!HasShortcut(key, 0)) {
// Add semantic zoom in shortcut, bug #6692 // Add semantic zoom in shortcut, bug #6692
BMessage* increaseSize = new BMessage(kIconMode); BMessage* increaseSize = new BMessage(kIconMode);