Skip to content

Commit a4a9b84

Browse files
Merge remote-tracking branch 'origin/desktop-fix-frontend-message-response-dispatch' into nixpkgs-testing
2 parents 0ea70ff + 2ce5462 commit a4a9b84

File tree

4 files changed

+24
-15
lines changed

4 files changed

+24
-15
lines changed

desktop/src/app.rs

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ impl App {
8282
}
8383
}
8484

85-
fn handle_desktop_frontend_message(&mut self, message: DesktopFrontendMessage) {
85+
fn handle_desktop_frontend_message(&mut self, message: DesktopFrontendMessage, responses: &mut Vec<DesktopWrapperMessage>) {
8686
match message {
8787
DesktopFrontendMessage::ToWeb(messages) => {
8888
let Some(bytes) = serialize_frontend_messages(messages) else {
@@ -205,7 +205,7 @@ impl App {
205205
to_front: false,
206206
select_after_open: true,
207207
};
208-
self.dispatch_desktop_wrapper_message(message);
208+
responses.push(message);
209209
}
210210
}
211211
DesktopFrontendMessage::PersistenceLoadRemainingDocuments => {
@@ -216,7 +216,7 @@ impl App {
216216
to_front: true,
217217
select_after_open: false,
218218
};
219-
self.dispatch_desktop_wrapper_message(message);
219+
responses.push(message);
220220
}
221221
for (id, document) in self.persistent_data.documents_after_current() {
222222
let message = DesktopWrapperMessage::LoadDocument {
@@ -225,11 +225,11 @@ impl App {
225225
to_front: false,
226226
select_after_open: false,
227227
};
228-
self.dispatch_desktop_wrapper_message(message);
228+
responses.push(message);
229229
}
230230
if let Some(id) = self.persistent_data.current_document_id() {
231231
let message = DesktopWrapperMessage::SelectDocument { id };
232-
self.dispatch_desktop_wrapper_message(message);
232+
responses.push(message);
233233
}
234234
}
235235
DesktopFrontendMessage::PersistenceWritePreferences { preferences } => {
@@ -238,14 +238,18 @@ impl App {
238238
DesktopFrontendMessage::PersistenceLoadPreferences => {
239239
let preferences = self.persistent_data.load_preferences();
240240
let message = DesktopWrapperMessage::LoadPreferences { preferences };
241-
self.dispatch_desktop_wrapper_message(message);
241+
responses.push(message);
242242
}
243243
}
244244
}
245245

246246
fn handle_desktop_frontend_messages(&mut self, messages: Vec<DesktopFrontendMessage>) {
247+
let mut responses = Vec::new();
247248
for message in messages {
248-
self.handle_desktop_frontend_message(message);
249+
self.handle_desktop_frontend_message(message, &mut responses);
250+
}
251+
for message in responses {
252+
self.dispatch_desktop_wrapper_message(message);
249253
}
250254
}
251255

desktop/src/cef/input.rs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,8 @@ impl ClickTracker {
246246
return ClickCount::Single;
247247
};
248248

249-
let previous = record.time;
249+
let prev_time = record.time;
250+
let prev_position = record.position;
250251

251252
let now = Instant::now();
252253
record.time = now;
@@ -270,10 +271,10 @@ impl ClickTracker {
270271
_ => {}
271272
}
272273

273-
let dx = position.x.abs_diff(record.position.x);
274-
let dy = position.y.abs_diff(record.position.y);
274+
let dx = position.x.abs_diff(prev_position.x);
275+
let dy = position.y.abs_diff(prev_position.y);
275276
let within_dist = dx <= MULTICLICK_ALLOWED_TRAVEL && dy <= MULTICLICK_ALLOWED_TRAVEL;
276-
let within_time = now.saturating_duration_since(previous) <= MULTICLICK_TIMEOUT;
277+
let within_time = now.saturating_duration_since(prev_time) <= MULTICLICK_TIMEOUT;
277278

278279
let count = if within_time && within_dist { ClickCount::Double } else { ClickCount::Single };
279280

desktop/wrapper/src/message_dispatcher.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,8 @@ impl<'a> DesktopWrapperMessageDispatcher<'a> {
7171
frontend_messages.extend(current_frontend_messages);
7272
}
7373

74-
self.respond(DesktopFrontendMessage::ToWeb(frontend_messages));
74+
if !frontend_messages.is_empty() {
75+
self.respond(DesktopFrontendMessage::ToWeb(frontend_messages));
76+
}
7577
}
7678
}

editor/src/messages/portfolio/portfolio_message_handler.rs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -136,10 +136,12 @@ impl MessageHandler<PortfolioMessage, PortfolioMessageContext<'_>> for Portfolio
136136

137137
// Messages
138138
PortfolioMessage::Init => {
139-
// Load persistent data from the browser database
140-
responses.add(FrontendMessage::TriggerLoadFirstAutoSaveDocument);
139+
// Tell frontend to load persistent preferences
141140
responses.add(FrontendMessage::TriggerLoadPreferences);
142141

142+
// Tell frontend to load the current document
143+
responses.add(FrontendMessage::TriggerLoadFirstAutoSaveDocument);
144+
143145
// Display the menu bar at the top of the window
144146
responses.add(MenuBarMessage::SendLayout);
145147

@@ -149,7 +151,7 @@ impl MessageHandler<PortfolioMessage, PortfolioMessageContext<'_>> for Portfolio
149151
node_types: document_node_definitions::collect_node_types(),
150152
});
151153

152-
// Finish loading persistent data from the browser database
154+
// Tell frontend to finish loading persistent documents
153155
responses.add(FrontendMessage::TriggerLoadRestAutoSaveDocuments);
154156
}
155157
PortfolioMessage::DocumentPassMessage { document_id, message } => {

0 commit comments

Comments
 (0)