diff --git a/headers/os/interface/InterfaceDefs.h b/headers/os/interface/InterfaceDefs.h index 3b66e1a93a..3e2875af80 100644 --- a/headers/os/interface/InterfaceDefs.h +++ b/headers/os/interface/InterfaceDefs.h @@ -8,6 +8,7 @@ #include #include +#include class BBitmap; @@ -419,6 +420,8 @@ status_t set_scroll_bar_info(scroll_bar_info* info); status_t get_mouse_type(int32* type); status_t set_mouse_type(int32 type); +status_t get_mouse_type_by_name(BString mouse_name, int32* type); +status_t set_mouse_type_by_name(BString mouse_name, int32 type); status_t get_mouse_map(mouse_map* map); status_t set_mouse_map(mouse_map* map); status_t get_click_speed(bigtime_t* speed); diff --git a/src/add-ons/input_server/devices/mouse/MouseInputDevice.cpp b/src/add-ons/input_server/devices/mouse/MouseInputDevice.cpp index e4960d3452..049ceaf4e7 100644 --- a/src/add-ons/input_server/devices/mouse/MouseInputDevice.cpp +++ b/src/add-ons/input_server/devices/mouse/MouseInputDevice.cpp @@ -544,7 +544,7 @@ MouseDevice::_UpdateSettings() } } - if (get_mouse_type(&fSettings.type) != B_OK) + if (get_mouse_type_by_name(fDeviceRef.name, &fSettings.type) != B_OK) LOG_ERR("error when get_mouse_type\n"); else ioctl(fDevice, MS_SET_TYPE, &fSettings.type); diff --git a/src/kits/interface/InterfaceDefs.cpp b/src/kits/interface/InterfaceDefs.cpp index c57ea8893e..7d30ed28b9 100644 --- a/src/kits/interface/InterfaceDefs.cpp +++ b/src/kits/interface/InterfaceDefs.cpp @@ -504,6 +504,38 @@ set_mouse_type(int32 type) } +status_t +get_mouse_type_by_name(BString mouse_name, int32 *type) +{ + BMessage command(IS_GET_MOUSE_TYPE); + BMessage reply; + + status_t err = _control_input_server_(&command, &reply); + if (err != B_OK) + return err; + + return reply.FindInt32("mouse_type", type); +} + + +status_t +set_mouse_type_by_name(BString mouse_name, int32 type) +{ + BMessage command(IS_SET_MOUSE_TYPE); + BMessage reply; + + status_t err_mouse_name = command.AddString("mouse_name", + mouse_name.String()); + if (err_mouse_name != B_OK) + return err_mouse_name; + + status_t err = command.AddInt32("mouse_type", type); + if (err != B_OK) + return err; + return _control_input_server_(&command, &reply); +} + + status_t get_mouse_map(mouse_map *map) { diff --git a/src/preferences/input/MouseSettings.cpp b/src/preferences/input/MouseSettings.cpp index 99f154b0ed..429af23155 100644 --- a/src/preferences/input/MouseSettings.cpp +++ b/src/preferences/input/MouseSettings.cpp @@ -85,8 +85,8 @@ MouseSettings::_RetrieveSettings() fprintf(stderr, "error when get_mouse_speed\n"); if (get_mouse_acceleration(&fSettings.accel.accel_factor) != B_OK) fprintf(stderr, "error when get_mouse_acceleration\n"); - if (get_mouse_type(&fSettings.type) != B_OK) - fprintf(stderr, "error when get_mouse_type\n"); + if (get_mouse_type_by_name(fname, &fSettings.type) != B_OK) + fprintf(stderr, "error when get_multiple_mouse_type\n"); fMode = mouse_mode(); fFocusFollowsMouseMode = focus_follows_mouse_mode(); @@ -238,7 +238,7 @@ MouseSettings::IsRevertable() void MouseSettings::SetMouseType(int32 type) { - if (set_mouse_type(type) == B_OK) + if (set_mouse_type_by_name(fname, type) == B_OK) fSettings.type = type; } @@ -345,7 +345,6 @@ MultipleMouseSettings::MultipleMouseSettings() #ifdef DEBUG Dump(); #endif - }