mirror of
https://github.com/GraphiteEditor/Graphite.git
synced 2026-09-15 22:28:10 +08:00
Desktop: Fix missing resize events causing all-gray window on Mac after launch (#3445)
* okayish solution should be improved at some point but for now it works well enough. * do leftover renames * better solution * less weird resize frames * move surface reconfiguration * fix recent desktop mac breakages * better looking resize on mac * fix background color * Fix blank screen on window initialization * cleanup --------- Co-authored-by: Keavon Chambers <keavon@keavon.com>
This commit is contained in:
@@ -111,10 +111,7 @@ pub(super) fn intercept_frontend_message(dispatcher: &mut DesktopWrapperMessageD
|
||||
dispatcher.respond(DesktopFrontendMessage::PersistenceLoadPreferences);
|
||||
}
|
||||
#[cfg(target_os = "macos")]
|
||||
FrontendMessage::UpdateMenuBarLayout {
|
||||
layout_target: graphite_editor::messages::tool::tool_messages::tool_prelude::LayoutTarget::MenuBar,
|
||||
diff,
|
||||
} => {
|
||||
FrontendMessage::UpdateMenuBarLayout { diff } => {
|
||||
use graphite_editor::messages::tool::tool_messages::tool_prelude::{DiffUpdate, WidgetDiff};
|
||||
match diff.as_slice() {
|
||||
[
|
||||
|
||||
@@ -3,14 +3,14 @@ pub(crate) mod menu {
|
||||
use base64::engine::Engine;
|
||||
use base64::engine::general_purpose::STANDARD as BASE64;
|
||||
|
||||
use graphite_editor::messages::input_mapper::utility_types::input_keyboard::{Key, LabeledKey, LabeledShortcut};
|
||||
use graphite_editor::messages::input_mapper::utility_types::input_keyboard::{Key, LabeledKeyOrMouseMotion, LabeledShortcut};
|
||||
use graphite_editor::messages::input_mapper::utility_types::misc::ActionShortcut;
|
||||
use graphite_editor::messages::layout::LayoutMessage;
|
||||
use graphite_editor::messages::tool::tool_messages::tool_prelude::{Layout, LayoutGroup, LayoutTarget, MenuListEntry, Widget, WidgetId};
|
||||
|
||||
use crate::messages::{EditorMessage, KeyCode, MenuItem, Modifiers, Shortcut};
|
||||
|
||||
pub(crate) fn convert_menu_bar_layout_to_menu_items(layout: &Layout) -> Vec<MenuItem> {
|
||||
pub(crate) fn convert_menu_bar_layout_to_menu_items(Layout(layout): &Layout) -> Vec<MenuItem> {
|
||||
let layout_group = match layout.as_slice() {
|
||||
[layout_group] => layout_group,
|
||||
_ => panic!("Menu bar layout is supposed to have exactly one layout group"),
|
||||
@@ -68,9 +68,9 @@ pub(crate) mod menu {
|
||||
value,
|
||||
label,
|
||||
icon,
|
||||
shortcut_keys,
|
||||
children,
|
||||
disabled,
|
||||
tooltip_shortcut,
|
||||
children,
|
||||
..
|
||||
}: &MenuListEntry = entry;
|
||||
path.push(value.clone());
|
||||
@@ -83,7 +83,7 @@ pub(crate) mod menu {
|
||||
return MenuItem::SubMenu { id, text, enabled, items };
|
||||
}
|
||||
|
||||
let shortcut = match shortcut_keys {
|
||||
let shortcut = match tooltip_shortcut {
|
||||
Some(ActionShortcut::Shortcut(LabeledShortcut(shortcut))) => convert_labeled_keys_to_shortcut(shortcut),
|
||||
_ => None,
|
||||
};
|
||||
@@ -126,10 +126,14 @@ pub(crate) mod menu {
|
||||
items
|
||||
}
|
||||
|
||||
fn convert_labeled_keys_to_shortcut(labeled_keys: &Vec<LabeledKey>) -> Option<Shortcut> {
|
||||
fn convert_labeled_keys_to_shortcut(labeled_keys: &Vec<LabeledKeyOrMouseMotion>) -> Option<Shortcut> {
|
||||
let mut key: Option<KeyCode> = None;
|
||||
let mut modifiers = Modifiers::default();
|
||||
for labeled_key in labeled_keys {
|
||||
let LabeledKeyOrMouseMotion::Key(labeled_key) = labeled_key else {
|
||||
// Return None for shortcuts that include mouse motion because we can't show them in native menu
|
||||
return None;
|
||||
};
|
||||
match labeled_key.key() {
|
||||
Key::Shift => modifiers |= Modifiers::SHIFT,
|
||||
Key::Control => modifiers |= Modifiers::CONTROL,
|
||||
|
||||
Reference in New Issue
Block a user