Skip to content

Commit 2c8b51c

Browse files
committed
only return focus to previous app when it should
1 parent 2c81448 commit 2c8b51c

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

src/app.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ pub enum Message {
3131
KeyPressed(u32),
3232
HideWindow(Id),
3333
RunFunction(Function),
34+
ReturnFocus,
3435
ClearSearchResults,
3536
WindowFocusChanged(Id, bool),
3637
ClearSearchQuery,

src/app/tile/update.rs

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,7 @@ pub fn handle_update(tile: &mut Tile, message: Message) -> Task<Message> {
154154
} else {
155155
Message::_Nothing
156156
}),
157+
Task::done(Message::ReturnFocus),
157158
])
158159
}
159160
} else {
@@ -164,23 +165,34 @@ pub fn handle_update(tile: &mut Tile, message: Message) -> Task<Message> {
164165
Message::RunFunction(command) => {
165166
command.execute(&tile.config, &tile.query);
166167

168+
let return_focus_task = match &command {
169+
Function::OpenApp(_) | Function::OpenPrefPane | Function::GoogleSearch(_) => Task::none(),
170+
_ => Task::done(Message::ReturnFocus),
171+
};
172+
167173
if tile.config.buffer_rules.clear_on_enter {
168174
window::latest()
169175
.map(|x| x.unwrap())
170176
.map(Message::HideWindow)
171177
.chain(Task::done(Message::ClearSearchQuery))
178+
.chain(return_focus_task)
172179
} else {
173180
Task::none()
174181
}
175182
}
176183

177184
Message::HideWindow(a) => {
178-
tile.restore_frontmost();
179185
tile.visible = false;
180186
tile.focused = false;
181187
tile.page = Page::Main;
182188
Task::batch([window::close(a), Task::done(Message::ClearSearchResults)])
183189
}
190+
191+
Message::ReturnFocus => {
192+
tile.restore_frontmost();
193+
Task::none()
194+
}
195+
184196
Message::ClearSearchResults => {
185197
tile.results = vec![];
186198
Task::none()

0 commit comments

Comments
 (0)