From 85e84ddefb2aa36c93ee3a0c5545ba053f2d56bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1ximo=20Casta=C3=B1eda?= Date: Sun, 28 Jul 2024 16:31:41 +0200 Subject: [PATCH] Input server and preferences: clean up Remove compatibility with legacy settings format. The preferences app doesn't need to read and save the settings file: devices are enumerated and their properties retrieved from the input_server. When something changes, the input_server updates the data. Change-Id: Id1ea6f2532a1c8a173e9ba9818dd911fd6f4aa10 Reviewed-on: https://review.haiku-os.org/c/haiku/+/7877 Tested-by: Commit checker robot Reviewed-by: waddlesplash --- headers/private/input/kb_mouse_settings.h | 6 + src/preferences/input/Input.cpp | 5 +- src/preferences/input/Input.h | 6 +- src/preferences/input/InputDeviceView.cpp | 7 +- src/preferences/input/InputDeviceView.h | 13 - src/preferences/input/InputKeyboard.h | 4 +- src/preferences/input/InputMouse.cpp | 15 +- src/preferences/input/InputMouse.h | 9 +- src/preferences/input/InputWindow.cpp | 9 +- src/preferences/input/InputWindow.h | 26 -- src/preferences/input/KeyboardSettings.cpp | 5 +- src/preferences/input/KeyboardSettings.h | 2 +- src/preferences/input/KeyboardView.cpp | 3 - src/preferences/input/KeyboardView.h | 2 +- src/preferences/input/MouseSettings.cpp | 290 +-------------------- src/preferences/input/MouseSettings.h | 31 +-- src/preferences/input/SettingsView.cpp | 12 +- src/preferences/input/SettingsView.h | 3 - src/servers/input/MouseSettings.cpp | 104 +------- src/servers/input/MouseSettings.h | 15 +- 20 files changed, 51 insertions(+), 516 deletions(-) diff --git a/headers/private/input/kb_mouse_settings.h b/headers/private/input/kb_mouse_settings.h index e76db24119..b142a1f552 100644 --- a/headers/private/input/kb_mouse_settings.h +++ b/headers/private/input/kb_mouse_settings.h @@ -32,6 +32,12 @@ typedef struct { bigtime_t click_speed; } mouse_settings; +static const bigtime_t kDefaultClickSpeed = 500000; +static const int32 kDefaultMouseSpeed = 65536; +static const int32 kDefaultMouseType = 3; // 3 button mouse +static const int32 kDefaultAccelerationFactor = 65536; +static const bool kDefaultAcceptFirstClick = true; + #define mouse_settings_file "Mouse_settings" #endif /* _KB_MOUSE_SETTINGS_H */ diff --git a/src/preferences/input/Input.cpp b/src/preferences/input/Input.cpp index 527ba625aa..d3569fde66 100644 --- a/src/preferences/input/Input.cpp +++ b/src/preferences/input/Input.cpp @@ -13,10 +13,9 @@ #include #include "InputConstants.h" -#include "InputMouse.h" +#include "InputDeviceView.h" +#include "InputTouchpadPrefView.h" #include "InputWindow.h" -#include "MouseSettings.h" -#include "MouseView.h" #undef B_TRANSLATION_CONTEXT diff --git a/src/preferences/input/Input.h b/src/preferences/input/Input.h index 4ba25274a1..9ede638ac6 100644 --- a/src/preferences/input/Input.h +++ b/src/preferences/input/Input.h @@ -15,14 +15,10 @@ #include #include -#include "InputMouse.h" +#include "InputIcons.h" #include "InputWindow.h" -#include "MouseSettings.h" -class SettingsView; -class MouseSettings; - class InputApplication : public BApplication { public: InputApplication(); diff --git a/src/preferences/input/InputDeviceView.cpp b/src/preferences/input/InputDeviceView.cpp index a2ee5429aa..557f6d0d6a 100644 --- a/src/preferences/input/InputDeviceView.cpp +++ b/src/preferences/input/InputDeviceView.cpp @@ -11,15 +11,10 @@ #include -#include -#include -#include -#include #include -#include #include -#include +#include "InputIcons.h" #undef B_TRANSLATION_CONTEXT #define B_TRANSLATION_CONTEXT "DeviceList" diff --git a/src/preferences/input/InputDeviceView.h b/src/preferences/input/InputDeviceView.h index 2395caab0b..312b38256f 100644 --- a/src/preferences/input/InputDeviceView.h +++ b/src/preferences/input/InputDeviceView.h @@ -11,29 +11,16 @@ #define _INPUT_DEVICE_VIEW_H #include -#include -#include -#include -#include #include -#include #include -#include "InputIcons.h" -#include "InputTouchpadPref.h" -#include "MouseSettings.h" - #define ITEM_SELECTED 'I1s' #define kITEM_MARGIN 1 -#define GREATER_THAN -1 -#define LESS_THAN 1 class InputIcons; -class TouchpadPref; -class MouseSettings; enum input_type { MOUSE_TYPE, diff --git a/src/preferences/input/InputKeyboard.h b/src/preferences/input/InputKeyboard.h index 41caa9cc9d..bd513a89cd 100644 --- a/src/preferences/input/InputKeyboard.h +++ b/src/preferences/input/InputKeyboard.h @@ -11,13 +11,11 @@ #define INPUT_KEYBOARD_H #include -#include +#include -#include "InputDeviceView.h" #include "KeyboardSettings.h" #include "KeyboardView.h" -class DeviceListView; class InputKeyboard : public BView { diff --git a/src/preferences/input/InputMouse.cpp b/src/preferences/input/InputMouse.cpp index c1420badfb..c0996a8df8 100644 --- a/src/preferences/input/InputMouse.cpp +++ b/src/preferences/input/InputMouse.cpp @@ -9,9 +9,6 @@ #include "InputMouse.h" -#include -#include -#include #include #include #include @@ -19,18 +16,10 @@ #include #include #include -#include -#include -#include -#include -#include -#include -#include +#include #include "InputConstants.h" -#include "InputWindow.h" #include "MouseSettings.h" -#include "MouseView.h" #undef B_TRANSLATION_CONTEXT @@ -157,7 +146,7 @@ InputMouse::MessageReceived(BMessage* message) int32 value; if (message->FindInt32("be:value", &value) == B_OK) { // slow = 1000000, fast = 0 - fSettings->SetClickSpeed(value * 1000); + fSettings->SetClickSpeed(1000000LL - value * 1000); fDefaultsButton->SetEnabled(fSettings->IsDefaultable()); fRevertButton->SetEnabled(fSettings->IsRevertable()); } diff --git a/src/preferences/input/InputMouse.h b/src/preferences/input/InputMouse.h index 26929ea65d..a3047fcd61 100644 --- a/src/preferences/input/InputMouse.h +++ b/src/preferences/input/InputMouse.h @@ -11,18 +11,11 @@ #define INPUT_MOUSE_H -#include #include #include -#include -#include -#include -#include -#include -#include +#include #include -#include "InputDeviceView.h" #include "MouseSettings.h" #include "MouseView.h" #include "SettingsView.h" diff --git a/src/preferences/input/InputWindow.cpp b/src/preferences/input/InputWindow.cpp index 90d6d8e6d5..6ed614efc6 100644 --- a/src/preferences/input/InputWindow.cpp +++ b/src/preferences/input/InputWindow.cpp @@ -8,25 +8,22 @@ */ -#include -#include -#include -#include #include #include #include #include #include #include -#include -#include +#include #include #include "InputConstants.h" #include "InputDeviceView.h" +#include "InputKeyboard.h" #include "InputMouse.h" #include "InputTouchpadPref.h" +#include "InputTouchpadPrefView.h" #include "InputWindow.h" #include "MouseSettings.h" #include "SettingsView.h" diff --git a/src/preferences/input/InputWindow.h b/src/preferences/input/InputWindow.h index bc3a00dd22..49fc73baad 100644 --- a/src/preferences/input/InputWindow.h +++ b/src/preferences/input/InputWindow.h @@ -11,39 +11,13 @@ #define INPUT_WINDOW_H -#include #include #include -#include #include #include -#include -#include -#include -#include #include -#include "InputDeviceView.h" -#include "InputKeyboard.h" -#include "InputMouse.h" -#include "InputTouchpadPrefView.h" #include "MouseSettings.h" -#include "touchpad_settings.h" - - -class BSplitView; -class BCardView; -class BCardLayout; - -class SettingsView; -class DeviceName; -class InputDevices; -class InputKeyboard; -class InputMouse; -class MultipleMouseSettings; -class TouchpadPrefView; -class TouchpadPref; -class TouchpadView; class InputWindow : public BWindow diff --git a/src/preferences/input/KeyboardSettings.cpp b/src/preferences/input/KeyboardSettings.cpp index 1c99f3f6cf..36f838f9e4 100644 --- a/src/preferences/input/KeyboardSettings.cpp +++ b/src/preferences/input/KeyboardSettings.cpp @@ -11,9 +11,6 @@ #include "KeyboardSettings.h" -#include -#include -#include #include @@ -69,7 +66,7 @@ KeyboardSettings::Defaults() bool -KeyboardSettings::IsDefaultable() +KeyboardSettings::IsDefaultable() const { return fSettings.key_repeat_delay != kb_default_key_repeat_delay || fSettings.key_repeat_rate != kb_default_key_repeat_rate; diff --git a/src/preferences/input/KeyboardSettings.h b/src/preferences/input/KeyboardSettings.h index 16e249c94a..443b275f4c 100644 --- a/src/preferences/input/KeyboardSettings.h +++ b/src/preferences/input/KeyboardSettings.h @@ -23,7 +23,7 @@ public : void Revert(); void Defaults(); - bool IsDefaultable(); + bool IsDefaultable() const; int32 KeyboardRepeatRate() const { return fSettings.key_repeat_rate; } diff --git a/src/preferences/input/KeyboardView.cpp b/src/preferences/input/KeyboardView.cpp index b44286f3d7..ca19d451ac 100644 --- a/src/preferences/input/KeyboardView.cpp +++ b/src/preferences/input/KeyboardView.cpp @@ -12,17 +12,14 @@ #include "KeyboardView.h" #include -#include #include #include #include #include #include #include -#include #include "InputConstants.h" -#include "KeyboardSettings.h" #undef B_TRANSLATION_CONTEXT #define B_TRANSLATION_CONTEXT "KeyboardView" diff --git a/src/preferences/input/KeyboardView.h b/src/preferences/input/KeyboardView.h index 87209ac5dd..b02dd62db8 100644 --- a/src/preferences/input/KeyboardView.h +++ b/src/preferences/input/KeyboardView.h @@ -13,7 +13,7 @@ #define KEYBOARD_VIEW_H -#include +#include #include #include #include diff --git a/src/preferences/input/MouseSettings.cpp b/src/preferences/input/MouseSettings.cpp index 421aa683ad..53e9765a70 100644 --- a/src/preferences/input/MouseSettings.cpp +++ b/src/preferences/input/MouseSettings.cpp @@ -18,17 +18,6 @@ #include -// The R5 settings file differs from that of Haiku; -// the latter maps 16 different mouse buttons -#define R5_COMPATIBLE 0 - -static const bigtime_t kDefaultClickSpeed = 500000; -static const int32 kDefaultMouseSpeed = 65536; -static const int32 kDefaultMouseType = 3; // 3 button mouse -static const int32 kDefaultAccelerationFactor = 65536; -static const bool kDefaultAcceptFirstClick = true; - - MouseSettings::MouseSettings(BString name) : fName(name) @@ -43,48 +32,11 @@ MouseSettings::MouseSettings(BString name) } -MouseSettings::MouseSettings(mouse_settings settings, BString name) - : - fSettings(settings) -{ - fName = name; - -#ifdef DEBUG - Dump(); -#endif - - // These are not stored in mouse_settings, get the current values from - // app_server - // FIXME these should be moved out of the MouseSettings class, since they - // are not specific to each mouse, but are global settings. - fMode = mouse_mode(); - fFocusFollowsMouseMode = focus_follows_mouse_mode(); - fAcceptFirstClick = accept_first_click(); - - fOriginalSettings = fSettings; - fOriginalMode = fMode; - fOriginalFocusFollowsMouseMode = fFocusFollowsMouseMode; - fOriginalAcceptFirstClick = fAcceptFirstClick; -} - - MouseSettings::~MouseSettings() { } -status_t -MouseSettings::_GetSettingsPath(BPath& path) -{ - status_t status = find_directory(B_USER_SETTINGS_DIRECTORY, &path); - if (status < B_OK) - return status; - - path.Append(mouse_settings_file); - return B_OK; -} - - status_t MouseSettings::_RetrieveSettings() { @@ -108,73 +60,6 @@ MouseSettings::_RetrieveSettings() } -status_t -MouseSettings::_LoadLegacySettings() -{ - BPath path; - if (_GetSettingsPath(path) < B_OK) - return B_ERROR; - - BFile file(path.Path(), B_READ_ONLY); - if (file.InitCheck() < B_OK) - return B_ERROR; - - // Read the settings from the file - file.Read((void*)&fSettings, sizeof(mouse_settings)); - -#ifdef DEBUG - Dump(); -#endif - - return B_OK; -} - - -#ifdef DEBUG -void -MouseSettings::Dump() -{ - printf("type:\t\t%" B_PRId32 " button mouse\n", fSettings.type); - for (int i = 0; i < 5; i++) - printf("button[%d]: %" B_PRId32 "\n", i, fSettings.map.button[i]); - printf("click speed:\t%" B_PRId64 "\n", fSettings.click_speed); - printf("accel:\t\t%s\n", fSettings.accel.enabled ? "enabled" : "disabled"); - printf("accel factor:\t%" B_PRId32 "\n", fSettings.accel.accel_factor); - printf("speed:\t\t%" B_PRId32 "\n", fSettings.accel.speed); - - const char* mode = "unknown"; - switch (fMode) { - case B_NORMAL_MOUSE: - mode = "click to focus and raise"; - break; - case B_CLICK_TO_FOCUS_MOUSE: - mode = "click to focus"; - break; - case B_FOCUS_FOLLOWS_MOUSE: - mode = "focus follows mouse"; - break; - } - printf("mouse mode:\t%s\n", mode); - - const char* focus_follows_mouse_mode = "unknown"; - switch (fFocusFollowsMouseMode) { - case B_NORMAL_FOCUS_FOLLOWS_MOUSE: - focus_follows_mouse_mode = "normal"; - break; - case B_WARP_FOCUS_FOLLOWS_MOUSE: - focus_follows_mouse_mode = "warp"; - break; - case B_INSTANT_WARP_FOCUS_FOLLOWS_MOUSE: - focus_follows_mouse_mode = "instant warp"; - break; - } - printf("focus follows mouse mode:\t%s\n", focus_follows_mouse_mode); - printf("accept first click:\t%s\n", - fAcceptFirstClick ? "enabled" : "disabled"); -} -#endif - - // Resets the settings to the system defaults void MouseSettings::Defaults() @@ -203,7 +88,7 @@ MouseSettings::Defaults() // Checks if the settings are different then the system defaults bool -MouseSettings::IsDefaultable() +MouseSettings::IsDefaultable() const { return fSettings.click_speed != kDefaultClickSpeed || fSettings.accel.speed != kDefaultMouseSpeed @@ -239,7 +124,7 @@ MouseSettings::Revert() // Checks if the settings are different then the original settings bool -MouseSettings::IsRevertable() +MouseSettings::IsRevertable() const { return fSettings.click_speed != fOriginalSettings.click_speed || fSettings.accel.speed != fOriginalSettings.accel.speed @@ -268,16 +153,13 @@ MouseSettings::SetMouseType(int32 type) bigtime_t MouseSettings::ClickSpeed() const { - return 1000000LL - fSettings.click_speed; - // to correct the Sliders 0-100000 scale + return fSettings.click_speed; } void MouseSettings::SetClickSpeed(bigtime_t clickSpeed) { - clickSpeed = 1000000LL - clickSpeed; - if (set_click_speed(clickSpeed) == B_OK) fSettings.click_speed = clickSpeed; } @@ -362,169 +244,27 @@ MouseSettings::GetSettings() MultipleMouseSettings::MultipleMouseSettings() { - fDeprecatedMouseSettings = NULL; - RetrieveSettings(); - -#ifdef DEBUG - Dump(); -#endif } MultipleMouseSettings::~MultipleMouseSettings() { - SaveSettings(); - -#ifdef DEBUG - Dump(); -#endif - std::map::iterator itr; - for (itr = fMouseSettingsObject.begin(); itr != fMouseSettingsObject.end(); - ++itr) + for (itr = fMouseSettingsObject.begin(); itr != fMouseSettingsObject.end(); ++itr) delete itr->second; - - delete fDeprecatedMouseSettings; } -status_t -MultipleMouseSettings::GetSettingsPath(BPath& path) -{ - status_t status = find_directory(B_USER_SETTINGS_DIRECTORY, &path); - if (status < B_OK) - return status; - - path.Append(mouse_settings_file); - return B_OK; -} - - -void -MultipleMouseSettings::RetrieveSettings() -{ - // retrieve current values - // also try to load the window position from disk - - BPath path; - if (GetSettingsPath(path) < B_OK) - return; - - BFile file(path.Path(), B_READ_ONLY); - if (file.InitCheck() < B_OK) - return; - - BMessage message; - - if (message.Unflatten(&file) == B_OK) { - int i = 0; - BString deviceName; - mouse_settings* settings; - ssize_t size = 0; - - while (message.FindString("mouseDevice", i, &deviceName) == B_OK) { - message.FindData( - "mouseSettings", B_ANY_TYPE, i, (const void**)&settings, &size); - MouseSettings* mouseSettings - = new MouseSettings(*settings, deviceName); - fMouseSettingsObject.insert( - std::pair(deviceName, mouseSettings)); - i++; - } - } else { - // Does not look like a BMessage, try loading using the old format - fDeprecatedMouseSettings = new MouseSettings(""); - if (fDeprecatedMouseSettings->_LoadLegacySettings() != B_OK) { - delete fDeprecatedMouseSettings; - fDeprecatedMouseSettings = NULL; - } - } -} - - -status_t -MultipleMouseSettings::Archive(BMessage* into, bool deep) const -{ - std::map::const_iterator itr; - for (itr = fMouseSettingsObject.begin(); itr != fMouseSettingsObject.end(); - ++itr) { - into->AddString("mouseDevice", itr->first); - into->AddData("mouseSettings", B_ANY_TYPE, itr->second->GetSettings(), - sizeof(*(itr->second->GetSettings()))); - } - - return B_OK; -} - - -status_t -MultipleMouseSettings::SaveSettings() -{ - BPath path; - status_t status = GetSettingsPath(path); - if (status < B_OK) - return status; - - BFile file(path.Path(), B_WRITE_ONLY | B_CREATE_FILE | B_ERASE_FILE); - status = file.InitCheck(); - if (status != B_OK) - return status; - - BMessage message; - Archive(&message, true); - message.Flatten(&file); - - return B_OK; -} - - -void -MultipleMouseSettings::Defaults() -{ - std::map::iterator itr; - for (itr = fMouseSettingsObject.begin(); itr != fMouseSettingsObject.end(); - ++itr) { - itr->second->Defaults(); - } - -} - - -#ifdef DEBUG -void -MultipleMouseSettings::Dump() -{ - std::map::iterator itr; - for (itr = fMouseSettingsObject.begin(); itr != fMouseSettingsObject.end(); - ++itr) { - printf("mouse_name:\t%s\n", itr->first.String()); - itr->second->Dump(); - printf("\n"); - } -} -#endif - - MouseSettings* MultipleMouseSettings::AddMouseSettings(BString mouse_name) { - if (fDeprecatedMouseSettings != NULL) { - MouseSettings* RetrievedSettings = new(std::nothrow) MouseSettings( - *(fDeprecatedMouseSettings->GetSettings()), mouse_name); + std::map::iterator itr; + itr = fMouseSettingsObject.find(mouse_name); - if (RetrievedSettings != NULL) { - fMouseSettingsObject.insert(std::pair( - mouse_name, RetrievedSettings)); + if (itr != fMouseSettingsObject.end()) + return itr->second; - return RetrievedSettings; - } - } - - MouseSettings* settings = GetMouseSettings(mouse_name); - if (settings) - return settings; - - settings = new(std::nothrow) MouseSettings(mouse_name); + MouseSettings* settings = new(std::nothrow) MouseSettings(mouse_name); if (settings == NULL) return NULL; @@ -532,15 +272,3 @@ MultipleMouseSettings::AddMouseSettings(BString mouse_name) std::pair(mouse_name, settings)); return settings; } - - -MouseSettings* -MultipleMouseSettings::GetMouseSettings(BString mouse_name) -{ - std::map::iterator itr; - itr = fMouseSettingsObject.find(mouse_name); - - if (itr != fMouseSettingsObject.end()) - return itr->second; - return NULL; -} diff --git a/src/preferences/input/MouseSettings.h b/src/preferences/input/MouseSettings.h index 9b74ccb8f3..36f98ed004 100644 --- a/src/preferences/input/MouseSettings.h +++ b/src/preferences/input/MouseSettings.h @@ -13,10 +13,6 @@ #include -#include -#include -#include -#include #include #include @@ -28,14 +24,12 @@ class BPath; class MouseSettings { public: MouseSettings(BString name); - MouseSettings(mouse_settings settings, BString name); ~MouseSettings(); void Revert(); - bool IsRevertable(); + bool IsRevertable() const; void Defaults(); - bool IsDefaultable(); - void Dump(); + bool IsDefaultable() const; int32 MouseType() const { return fSettings.type; } void SetMouseType(int32 type); @@ -64,13 +58,11 @@ public: bool AcceptFirstClick() const { return fAcceptFirstClick; } void SetAcceptFirstClick(bool accept_first_click); - status_t _RetrieveSettings(); - status_t _LoadLegacySettings(); mouse_settings* GetSettings(); private: - static status_t _GetSettingsPath(BPath &path); + status_t _RetrieveSettings(); private: BString fName; @@ -84,30 +76,15 @@ private: }; -class MultipleMouseSettings: public BArchivable +class MultipleMouseSettings { public: MultipleMouseSettings(); ~MultipleMouseSettings(); - status_t Archive(BMessage* into, bool deep = false) const; - - void Defaults(); - void Dump(); - status_t SaveSettings(); - - /** Get or create settings for the given mouse */ MouseSettings* AddMouseSettings(BString mouse_name); - /** Get the existing settings, or return NULL */ - MouseSettings* GetMouseSettings(BString mouse_name); private: - static status_t GetSettingsPath(BPath &path); - void RetrieveSettings(); - - private: - MouseSettings* fDeprecatedMouseSettings; - typedef std::map mouse_settings_object; mouse_settings_object fMouseSettingsObject; }; diff --git a/src/preferences/input/SettingsView.cpp b/src/preferences/input/SettingsView.cpp index 91a37df347..b9bbc00b2a 100644 --- a/src/preferences/input/SettingsView.cpp +++ b/src/preferences/input/SettingsView.cpp @@ -7,25 +7,17 @@ */ -#include "InputMouse.h" +#include "SettingsView.h" -#include #include -#include #include -#include #include #include #include #include -#include -#include -#include #include #include #include -#include -#include #include "InputConstants.h" #include "MouseSettings.h" @@ -186,7 +178,7 @@ SettingsView::MouseMapUpdated() void SettingsView::UpdateFromSettings() { - int32 value = int32(fSettings.ClickSpeed() / 1000); + int32 value = int32((1000000LL - fSettings.ClickSpeed()) / 1000); // slow = 1000000, fast = 0 fClickSpeedSlider->SetValue(value); diff --git a/src/preferences/input/SettingsView.h b/src/preferences/input/SettingsView.h index 3b3b6a8112..aed0a3604c 100644 --- a/src/preferences/input/SettingsView.h +++ b/src/preferences/input/SettingsView.h @@ -11,12 +11,9 @@ #define SETTINGS_VIEW_H -#include #include -#include #include #include -#include #include diff --git a/src/servers/input/MouseSettings.cpp b/src/servers/input/MouseSettings.cpp index cf44e14c86..6268f38c79 100644 --- a/src/servers/input/MouseSettings.cpp +++ b/src/servers/input/MouseSettings.cpp @@ -19,14 +19,6 @@ #include -static const bigtime_t kDefaultClickSpeed = 500000; -static const int32 kDefaultMouseSpeed = 65536; -static const int32 kDefaultMouseType = 3; // 3 button mouse -static const int32 kDefaultAccelerationFactor = 65536; -static const bool kDefaultAcceptFirstClick = true; - - - MouseSettings::MouseSettings() { Defaults(); @@ -34,30 +26,24 @@ MouseSettings::MouseSettings() #ifdef DEBUG Dump(); #endif - - fOriginalSettings = fSettings; - fOriginalMode = fMode; - fOriginalFocusFollowsMouseMode = fFocusFollowsMouseMode; - fOriginalAcceptFirstClick = fAcceptFirstClick; } -MouseSettings::MouseSettings(mouse_settings* originalSettings) +MouseSettings::MouseSettings(const mouse_settings* originalSettings) { Defaults(); - fMode = mouse_mode(); - fAcceptFirstClick = accept_first_click(); - fOriginalSettings = *originalSettings; - fSettings = *originalSettings; + if (originalSettings != NULL) { + fMode = mouse_mode(); + fFocusFollowsMouseMode = focus_follows_mouse_mode(); + fAcceptFirstClick = accept_first_click(); + + fSettings = *originalSettings; + } #ifdef DEBUG Dump(); #endif - - fOriginalMode = fMode; - fOriginalFocusFollowsMouseMode = fFocusFollowsMouseMode; - fOriginalAcceptFirstClick = fAcceptFirstClick; } @@ -66,49 +52,6 @@ MouseSettings::~MouseSettings() } -status_t -MouseSettings::GetSettingsPath(BPath &path) -{ - status_t status = find_directory(B_USER_SETTINGS_DIRECTORY, &path); - if (status < B_OK) - return status; - - path.Append(mouse_settings_file); - return B_OK; -} - - -void -MouseSettings::RetrieveSettings() -{ - // retrieve current values - - fMode = mouse_mode(); - fAcceptFirstClick = accept_first_click(); - Defaults(); - - // also try to load the window position from disk - - BPath path; - if (GetSettingsPath(path) < B_OK) - return; - - BFile file(path.Path(), B_READ_ONLY); - if (file.InitCheck() < B_OK) - return; - - if (file.ReadAt(0, &fSettings, sizeof(mouse_settings)) - != sizeof(mouse_settings)) { - Defaults(); - } - - if ((fSettings.click_speed == 0) - || (fSettings.type == 0)) { - Defaults(); - } -} - - #ifdef DEBUG void MouseSettings::Dump() @@ -264,7 +207,6 @@ MouseSettings::SetAcceptFirstClick(bool acceptFirstClick) MultipleMouseSettings::MultipleMouseSettings() { - fDeprecatedMouseSettings = NULL; RetrieveSettings(); #ifdef DEBUG @@ -282,11 +224,8 @@ MultipleMouseSettings::~MultipleMouseSettings() #endif std::map::iterator itr; - for (itr = fMouseSettingsObject.begin(); itr != fMouseSettingsObject.end(); - ++itr) + for (itr = fMouseSettingsObject.begin(); itr != fMouseSettingsObject.end(); ++itr) delete itr->second; - - delete fDeprecatedMouseSettings; } @@ -329,9 +268,6 @@ MultipleMouseSettings::RetrieveSettings() (deviceName, mouseSettings)); i++; } - } else { - fDeprecatedMouseSettings = new MouseSettings(); - fDeprecatedMouseSettings->RetrieveSettings(); } } @@ -402,25 +338,11 @@ MultipleMouseSettings::Dump() MouseSettings* MultipleMouseSettings::AddMouseSettings(BString mouse_name) { - if(fDeprecatedMouseSettings != NULL) { - MouseSettings* RetrievedSettings = new (std::nothrow) MouseSettings - (*fDeprecatedMouseSettings); + MouseSettings* settings = GetMouseSettings(mouse_name); + if (settings != NULL) + return settings; - if (RetrievedSettings != NULL) { - fMouseSettingsObject.insert(std::pair - (mouse_name, RetrievedSettings)); - - return RetrievedSettings; - } - } - - std::map::iterator itr; - itr = fMouseSettingsObject.find(mouse_name); - - if (itr != fMouseSettingsObject.end()) - return GetMouseSettings(mouse_name); - - MouseSettings* settings = new (std::nothrow) MouseSettings(); + settings = new(std::nothrow) MouseSettings(); if(settings != NULL) { fMouseSettingsObject.insert(std::pair diff --git a/src/servers/input/MouseSettings.h b/src/servers/input/MouseSettings.h index f944068cb7..dc6ab1a5c4 100644 --- a/src/servers/input/MouseSettings.h +++ b/src/servers/input/MouseSettings.h @@ -31,7 +31,7 @@ class MouseSettings { public: MouseSettings(); - MouseSettings(mouse_settings* originalSettings); + MouseSettings(const mouse_settings* originalSettings); ~MouseSettings(); void Defaults(); @@ -65,23 +65,16 @@ class MouseSettings { bool AcceptFirstClick() const { return fAcceptFirstClick; } void SetAcceptFirstClick(bool acceptFirstClick); - void RetrieveSettings(); - status_t SaveSettings(); - const mouse_settings* GetSettings() { return &fSettings; } private: - static status_t GetSettingsPath(BPath &path); - - mouse_settings fSettings, fOriginalSettings; + mouse_settings fSettings; // FIXME all these extra settings are not specific to each mouse. // They should be moved into MultipleMouseSettings directly - mode_mouse fMode, fOriginalMode; + mode_mouse fMode; mode_focus_follows_mouse fFocusFollowsMouseMode; - mode_focus_follows_mouse fOriginalFocusFollowsMouseMode; bool fAcceptFirstClick; - bool fOriginalAcceptFirstClick; }; @@ -104,8 +97,6 @@ class MultipleMouseSettings: public BArchivable { static status_t GetSettingsPath(BPath &path); void RetrieveSettings(); - MouseSettings* fDeprecatedMouseSettings; - typedef std::map mouse_settings_object; mouse_settings_object fMouseSettingsObject; };