Skip to content

Commit bdcede7

Browse files
committed
refactor: consistent error handling
1 parent 77dbe4e commit bdcede7

File tree

4 files changed

+24
-34
lines changed

4 files changed

+24
-34
lines changed

src/error.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ pub enum Error {
2020
EmptyHotKeyToken(String),
2121
#[error("Unexpected hotkey string format: \"{0}\", a hotkey should have the modifiers first and only contain one main key")]
2222
UnexpectedHotKeyFormat(String),
23-
#[error("{0}")]
23+
#[error("Unable to register hotkey: {0}")]
2424
FailedToRegister(String),
2525
#[error("Failed to unregister hotkey: {0:?}")]
2626
FailedToUnRegister(HotKey),

src/platform_impl/macos/mod.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ impl GlobalHotKeyManager {
124124

125125
if result != noErr as _ {
126126
return Err(crate::Error::FailedToRegister(format!(
127-
"Unable to register hotkey: {}",
127+
"RegisterEventHotKey failed for {}",
128128
hotkey.key
129129
)));
130130
}
@@ -147,7 +147,7 @@ impl GlobalHotKeyManager {
147147
self.start_watching_media_keys()
148148
} else {
149149
Err(crate::Error::FailedToRegister(format!(
150-
"Unable to register accelerator (unknown scancode for this key: {}).",
150+
"Unknown scancode for {}",
151151
hotkey.key
152152
)))
153153
}

src/platform_impl/windows/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ impl GlobalHotKeyManager {
112112
}
113113
_ => {
114114
return Err(crate::Error::FailedToRegister(format!(
115-
"Unable to register hotkey (unknown VKCode for this key: {}).",
115+
"Unknown VKCode for {}",
116116
hotkey.key
117117
)))
118118
}

src/platform_impl/x11/mod.rs

Lines changed: 20 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ use x11rb::protocol::{xkb, ErrorKind, Event};
1313
use x11rb::rust_connection::RustConnection;
1414
use xkeysym::RawKeysym;
1515

16-
use crate::{hotkey::HotKey, GlobalHotKeyEvent};
16+
use crate::{hotkey::HotKey, Error, GlobalHotKeyEvent};
1717

1818
enum ThreadMessage {
1919
RegisterHotKey(HotKey, Sender<crate::Result<()>>),
@@ -123,19 +123,19 @@ fn register_hotkey(
123123
);
124124

125125
let Some(key) = key else {
126-
return Err(registration_error(
127-
&hotkey,
128-
format!("unknown scancode for key: {}", hotkey.key),
129-
));
126+
return Err(Error::FailedToRegister(format!(
127+
"Unknown scancode for key: {}",
128+
hotkey.key
129+
)));
130130
};
131131

132-
let keycode = keysym_to_keycode(conn, key).map_err(|err| registration_error(&hotkey, err))?;
132+
let keycode = keysym_to_keycode(conn, key).map_err(|err| Error::FailedToRegister(err))?;
133133

134134
let Some(keycode) = keycode else {
135-
return Err(registration_error(
136-
&hotkey,
137-
format!("unable to find keycode for key: {}", hotkey.key),
138-
));
135+
return Err(Error::FailedToRegister(format!(
136+
"Unable to find keycode for key: {}",
137+
hotkey.key
138+
)));
139139
};
140140

141141
for m in ignored_mods() {
@@ -148,13 +148,11 @@ fn register_hotkey(
148148
GrabMode::ASYNC,
149149
GrabMode::ASYNC,
150150
)
151-
.map_err(|err| registration_error(&hotkey, format!("{}", err)))?;
151+
.map_err(|err| Error::FailedToRegister(err.to_string()))?;
152152

153153
if let Err(err) = result.check() {
154154
return match err {
155-
ReplyError::ConnectionError(err) => {
156-
Err(registration_error(&hotkey, format!("{}", err)))
157-
}
155+
ReplyError::ConnectionError(err) => Err(Error::FailedToRegister(err.to_string())),
158156
ReplyError::X11Error(err) => {
159157
if let ErrorKind::Access = err.error_kind {
160158
for m in ignored_mods() {
@@ -163,9 +161,9 @@ fn register_hotkey(
163161
}
164162
}
165163

166-
Err(crate::Error::AlreadyRegistered(hotkey))
164+
Err(Error::AlreadyRegistered(hotkey))
167165
} else {
168-
Err(registration_error(&hotkey, format!("{:?}", err)))
166+
Err(Error::FailedToRegister(format!("{err:?}")))
169167
}
170168
}
171169
};
@@ -178,7 +176,7 @@ fn register_hotkey(
178176
entry.push((hotkey.id(), modifiers, false));
179177
Ok(())
180178
}
181-
Some(_) => Err(crate::Error::AlreadyRegistered(hotkey)),
179+
Some(_) => Err(Error::AlreadyRegistered(hotkey)),
182180
}
183181
}
184182

@@ -195,14 +193,13 @@ fn unregister_hotkey(
195193
);
196194

197195
let Some(key) = key else {
198-
return Err(crate::Error::FailedToUnRegister(hotkey));
196+
return Err(Error::FailedToUnRegister(hotkey));
199197
};
200198

201-
let keycode =
202-
keysym_to_keycode(conn, key).map_err(|_err| crate::Error::FailedToUnRegister(hotkey))?;
199+
let keycode = keysym_to_keycode(conn, key).map_err(|_err| Error::FailedToUnRegister(hotkey))?;
203200

204201
let Some(keycode) = keycode else {
205-
return Err(crate::Error::FailedToUnRegister(hotkey));
202+
return Err(Error::FailedToUnRegister(hotkey));
206203
};
207204

208205
for m in ignored_mods() {
@@ -473,9 +470,9 @@ fn keysym_to_keycode(conn: &RustConnection, keysym: RawKeysym) -> Result<Option<
473470

474471
let mapping = conn
475472
.get_keyboard_mapping(min_keycode, count)
476-
.map_err(|err| format!("{}", err))?
473+
.map_err(|err| err.to_string())?
477474
.reply()
478-
.map_err(|err| format!("{}", err))?;
475+
.map_err(|err| err.to_string())?;
479476

480477
let keysyms_per_keycode = mapping.keysyms_per_keycode as usize;
481478

@@ -487,10 +484,3 @@ fn keysym_to_keycode(conn: &RustConnection, keysym: RawKeysym) -> Result<Option<
487484

488485
Ok(None)
489486
}
490-
491-
fn registration_error(hotkey: &HotKey, detail: String) -> crate::Error {
492-
crate::Error::FailedToRegister(format!(
493-
"Unable to register hotkey: {} - {}",
494-
hotkey, detail
495-
))
496-
}

0 commit comments

Comments
 (0)