navigation: selectable mouse navigation style

Options → User Preferences → Navigation style picks which mouse
gestures pan and orbit the model view (#1480):

- CAD (default): middle button pans, Shift + middle button orbits.
- Blender: middle button orbits, Shift + middle button pans.
- CATIA: middle button pans; pressing the left button during it orbits,
  so 3D navigation needs only the mouse.

An armed orbit tool always orbits. The choice is saved with the user
settings.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Hakan SevenandClaude Opus 5.5 committed 2026-10-15 11:17:13 +03:00
1 parent 74df9ff84a
commit 19ecf78bd9
30 files changed
+183 -1

No files matched your search

+4
View File
@@ -1563,6 +1563,10 @@ common =
.user-preferences = تفضيلات المستخدم
.zoom = التكبير
.reverse-mouse-wheel-zoom-zoomwheel = عكس التكبير بعجلة الفأرة (ZOOMWHEEL)
.navigation-style = نمط التنقل
.nav-style-cad = CAD: ‏Shift + الزر الأوسط للدوران
.nav-style-blender = Blender: الزر الأوسط للدوران، Shift للتحريك
.nav-style-catia = CATIA: الزر الأوسط + الأيسر للدوران
.touchpad-scroll-pans-ctrl-scroll-or-pinch-zooms = لوحة اللمس: التمرير يحرك العرض، Ctrl+تمرير أو القرص يكبّر
.interface-scale = مقياس الواجهة
.zoom-factor = معامل التكبير
+4
View File
@@ -1550,6 +1550,10 @@ common =
.user-preferences = Потребителски предпочитания
.zoom = Мащабиране
.reverse-mouse-wheel-zoom-zoomwheel = Обръщане на мащабирането с колелцето (ZOOMWHEEL)
.navigation-style = Стил на навигация
.nav-style-cad = CAD: Shift + среден бутон завърта
.nav-style-blender = Blender: среден бутон завърта, Shift премества
.nav-style-catia = CATIA: среден + ляв бутон завърта
.touchpad-scroll-pans-ctrl-scroll-or-pinch-zooms = Тъчпад: превъртането мести изгледа, Ctrl+превъртане или щипване мащабира
.interface-scale = Мащаб на интерфейса
.zoom-factor = Коефициент на мащабиране
+4
View File
@@ -1550,6 +1550,10 @@ common =
.user-preferences = Předvolby uživatele
.zoom = Zoom
.reverse-mouse-wheel-zoom-zoomwheel = Obrátit zoom kolečkem myši (ZOOMWHEEL)
.navigation-style = Styl navigace
.nav-style-cad = CAD: Shift + prostřední tlačítko otáčí
.nav-style-blender = Blender: prostřední tlačítko otáčí, Shift posouvá
.nav-style-catia = CATIA: prostřední + levé tlačítko otáčí
.touchpad-scroll-pans-ctrl-scroll-or-pinch-zooms = Touchpad: posun posouvá pohled, Ctrl+posun nebo sevření zvětšuje
.interface-scale = Měřítko rozhraní
.zoom-factor = Faktor zoomu
+4
View File
@@ -1551,6 +1551,10 @@ common =
.user-preferences = Benutzereinstellungen
.zoom = Zoom
.reverse-mouse-wheel-zoom-zoomwheel = Mausradzoom umkehren (ZOOMWHEEL)
.navigation-style = Navigationsstil
.nav-style-cad = CAD: Umschalt + mittlere Taste dreht
.nav-style-blender = Blender: mittlere Taste dreht, Umschalt verschiebt
.nav-style-catia = CATIA: mittlere + linke Taste dreht
.touchpad-scroll-pans-ctrl-scroll-or-pinch-zooms = Touchpad: Scrollen verschiebt, Strg+Scrollen oder Zusammenziehen zoomt
.interface-scale = Oberflächenskalierung
.zoom-factor = Zoomfaktor
+4
View File
@@ -1552,6 +1552,10 @@ common =
.user-preferences = Προτιμήσεις χρήστη
.zoom = Ζουμ
.reverse-mouse-wheel-zoom-zoomwheel = Αντιστροφή ζουμ με τον τροχό (ZOOMWHEEL)
.navigation-style = Στυλ πλοήγησης
.nav-style-cad = CAD: Shift + μεσαίο πλήκτρο περιστρέφει
.nav-style-blender = Blender: μεσαίο πλήκτρο περιστρέφει, Shift μετακινεί
.nav-style-catia = CATIA: μεσαίο + αριστερό πλήκτρο περιστρέφει
.touchpad-scroll-pans-ctrl-scroll-or-pinch-zooms = Επιφάνεια αφής: η κύλιση μετακινεί, Ctrl+κύλιση ή τσίμπημα κάνει ζουμ
.interface-scale = Κλίμακα διεπαφής
.zoom-factor = Συντελεστής ζουμ
+4
View File
@@ -1551,6 +1551,10 @@ common =
.user-preferences = User Preferences
.zoom = Zoom
.reverse-mouse-wheel-zoom-zoomwheel = Reverse mouse wheel zoom (ZOOMWHEEL)
.navigation-style = Navigation style
.nav-style-cad = CAD: Shift + middle button orbits
.nav-style-blender = Blender: middle button orbits, Shift pans
.nav-style-catia = CATIA: middle + left button orbits
.touchpad-scroll-pans-ctrl-scroll-or-pinch-zooms = Touchpad: scroll pans, Ctrl+scroll or pinch zooms
.interface-scale = Interface scale
.zoom-factor = Zoom factor
+4
View File
@@ -1551,6 +1551,10 @@ common =
.user-preferences = Preferencias de usuario
.zoom = Zoom
.reverse-mouse-wheel-zoom-zoomwheel = Invertir el zoom de la rueda del ratón (ZOOMWHEEL)
.navigation-style = Estilo de navegación
.nav-style-cad = CAD: Mayús + botón central orbita
.nav-style-blender = Blender: botón central orbita, Mayús desplaza
.nav-style-catia = CATIA: botón central + izquierdo orbita
.touchpad-scroll-pans-ctrl-scroll-or-pinch-zooms = Panel táctil: el desplazamiento encuadra, Ctrl+desplazamiento o pellizco hace zoom
.interface-scale = Escala de la interfaz
.zoom-factor = Factor de zoom
+4
View File
@@ -1550,6 +1550,10 @@ common =
.user-preferences = Käyttäjäasetukset
.zoom = Zoomaus
.reverse-mouse-wheel-zoom-zoomwheel = Käännä hiiren rullan zoomaus (ZOOMWHEEL)
.navigation-style = Navigointityyli
.nav-style-cad = CAD: Vaihto + keskipainike kiertää
.nav-style-blender = Blender: keskipainike kiertää, Vaihto panoroi
.nav-style-catia = CATIA: keski- + vasen painike kiertää
.touchpad-scroll-pans-ctrl-scroll-or-pinch-zooms = Kosketuslevy: vieritys panoroi, Ctrl+vieritys tai nipistys zoomaa
.interface-scale = Käyttöliittymän skaalaus
.zoom-factor = Zoomauskerroin
+4
View File
@@ -1551,6 +1551,10 @@ common =
.user-preferences = Préférences utilisateur
.zoom = Zoom
.reverse-mouse-wheel-zoom-zoomwheel = Inverser le zoom à la molette (ZOOMWHEEL)
.navigation-style = Style de navigation
.nav-style-cad = CAO : Maj + bouton du milieu fait pivoter
.nav-style-blender = Blender : bouton du milieu fait pivoter, Maj déplace
.nav-style-catia = CATIA : boutons du milieu + gauche font pivoter
.touchpad-scroll-pans-ctrl-scroll-or-pinch-zooms = Pavé tactile : le défilement déplace, Ctrl+défilement ou pincement zoome
.interface-scale = Échelle de l'interface
.zoom-factor = Facteur de zoom
+4
View File
@@ -1539,6 +1539,10 @@ common =
.user-preferences = उपयोगकर्ता प्राथमिकताएँ
.zoom = ज़ूम
.reverse-mouse-wheel-zoom-zoomwheel = माउस व्हील ज़ूम उलटें (ZOOMWHEEL)
.navigation-style = नेविगेशन शैली
.nav-style-cad = CAD: Shift + मध्य बटन घुमाता है
.nav-style-blender = Blender: मध्य बटन घुमाता है, Shift खिसकाता है
.nav-style-catia = CATIA: मध्य + बायाँ बटन घुमाता है
.touchpad-scroll-pans-ctrl-scroll-or-pinch-zooms = टचपैड: स्क्रॉल पैन करता है, Ctrl+स्क्रॉल या पिंच ज़ूम करता है
.interface-scale = इंटरफ़ेस स्केल
.zoom-factor = ज़ूम गुणक
+4
View File
@@ -1556,6 +1556,10 @@ common =
.user-preferences = Felhasználói beállítások
.zoom = Nagyítás
.reverse-mouse-wheel-zoom-zoomwheel = Egérgörgős nagyítás megfordítása (ZOOMWHEEL)
.navigation-style = Navigációs stílus
.nav-style-cad = CAD: Shift + középső gomb forgat
.nav-style-blender = Blender: középső gomb forgat, Shift mozgat
.nav-style-catia = CATIA: középső + bal gomb forgat
.touchpad-scroll-pans-ctrl-scroll-or-pinch-zooms = Érintőpad: a görgetés mozgat, a Ctrl+görgetés vagy csippentés nagyít
.interface-scale = Felület mérete
.zoom-factor = Nagyítási tényező
+4
View File
@@ -1550,6 +1550,10 @@ common =
.user-preferences = Preferenze utente
.zoom = Zoom
.reverse-mouse-wheel-zoom-zoomwheel = Inverti lo zoom con la rotellina (ZOOMWHEEL)
.navigation-style = Stile di navigazione
.nav-style-cad = CAD: Maiusc + tasto centrale ruota
.nav-style-blender = Blender: tasto centrale ruota, Maiusc sposta
.nav-style-catia = CATIA: tasto centrale + sinistro ruota
.touchpad-scroll-pans-ctrl-scroll-or-pinch-zooms = Touchpad: lo scorrimento sposta la vista, Ctrl+scorrimento o pizzico esegue lo zoom
.interface-scale = Scala dell'interfaccia
.zoom-factor = Fattore di zoom
+4
View File
@@ -1541,6 +1541,10 @@ common =
.user-preferences = ユーザー設定
.zoom = ズーム
.reverse-mouse-wheel-zoom-zoomwheel = マウス ホイールのズーム方向を反転 (ZOOMWHEEL)
.navigation-style = ナビゲーション スタイル
.nav-style-cad = CAD: Shift + 中ボタンで回転
.nav-style-blender = Blender: 中ボタンで回転、Shift で画面移動
.nav-style-catia = CATIA: 中 + 左ボタンで回転
.touchpad-scroll-pans-ctrl-scroll-or-pinch-zooms = タッチパッド: スクロールで画面移動、Ctrl+スクロールまたはピンチでズーム
.interface-scale = インターフェースの拡大率
.zoom-factor = ズーム倍率
+4
View File
@@ -1550,6 +1550,10 @@ common =
.user-preferences = 사용자 환경설정
.zoom = 줌
.reverse-mouse-wheel-zoom-zoomwheel = 마우스 휠 줌 방향 반전 (ZOOMWHEEL)
.navigation-style = 탐색 스타일
.nav-style-cad = CAD: Shift + 가운데 버튼으로 회전
.nav-style-blender = Blender: 가운데 버튼으로 회전, Shift로 이동
.nav-style-catia = CATIA: 가운데 + 왼쪽 버튼으로 회전
.touchpad-scroll-pans-ctrl-scroll-or-pinch-zooms = 터치패드: 스크롤은 화면 이동, Ctrl+스크롤 또는 핀치는 확대/축소
.interface-scale = 인터페이스 배율
.zoom-factor = 줌 배율
+4
View File
@@ -1556,6 +1556,10 @@ common =
.user-preferences = ການຕັ້ງຄ່າສ່ວນຕົວຂອງຜູ້ໃຊ້
.zoom = ຊູມ
.reverse-mouse-wheel-zoom-zoomwheel = ສະຫຼັບທິດທາງການໝຸນລໍ້ເມົາສ໌ຊູມ (ZOOMWHEEL)
.navigation-style = ຮູບແບບການນຳທາງ
.nav-style-cad = CAD: Shift + ປຸ່ມກາງ ໝຸນ
.nav-style-blender = Blender: ປຸ່ມກາງ ໝຸນ, Shift ເລື່ອນ
.nav-style-catia = CATIA: ປຸ່ມກາງ + ຊ້າຍ ໝຸນ
.touchpad-scroll-pans-ctrl-scroll-or-pinch-zooms = ທັດແພດ: ເລື່ອນເພື່ອຍ້າຍມຸມມອງ, Ctrl+ເລື່ອນ ຫຼື ບີບເພື່ອຊູມ
.interface-scale = ຂະໜາດສ່ວນຕິດຕໍ່
.zoom-factor = ຕົວຄູນການຊູມ
+4
View File
@@ -1549,6 +1549,10 @@ common =
.user-preferences = Gebruikersvoorkeuren
.zoom = Zoomen
.reverse-mouse-wheel-zoom-zoomwheel = Muiswielzoom omkeren (ZOOMWHEEL)
.navigation-style = Navigatiestijl
.nav-style-cad = CAD: Shift + middelste knop draait
.nav-style-blender = Blender: middelste knop draait, Shift verschuift
.nav-style-catia = CATIA: middelste + linkerknop draait
.touchpad-scroll-pans-ctrl-scroll-or-pinch-zooms = Touchpad: scrollen verschuift, Ctrl+scrollen of knijpen zoomt
.interface-scale = Interfaceschaal
.zoom-factor = Zoomfactor
+4
View File
@@ -1550,6 +1550,10 @@ common =
.user-preferences = Preferencje użytkownika
.zoom = Powiększenie
.reverse-mouse-wheel-zoom-zoomwheel = Odwróć powiększanie kółkiem myszy (ZOOMWHEEL)
.navigation-style = Styl nawigacji
.nav-style-cad = CAD: Shift + środkowy przycisk obraca
.nav-style-blender = Blender: środkowy przycisk obraca, Shift przesuwa
.nav-style-catia = CATIA: środkowy + lewy przycisk obraca
.touchpad-scroll-pans-ctrl-scroll-or-pinch-zooms = Touchpad: przewijanie przesuwa widok, Ctrl+przewijanie lub szczypanie powiększa
.interface-scale = Skala interfejsu
.zoom-factor = Współczynnik powiększenia
+4
View File
@@ -1551,6 +1551,10 @@ common =
.user-preferences = Preferências do usuário
.zoom = Zoom
.reverse-mouse-wheel-zoom-zoomwheel = Inverter o zoom da roda do mouse (ZOOMWHEEL)
.navigation-style = Estilo de navegação
.nav-style-cad = CAD: Shift + botão do meio orbita
.nav-style-blender = Blender: botão do meio orbita, Shift desloca
.nav-style-catia = CATIA: botão do meio + esquerdo orbita
.touchpad-scroll-pans-ctrl-scroll-or-pinch-zooms = Touchpad: rolar move a vista, Ctrl+rolar ou pinçar aplica zoom
.interface-scale = Escala da interface
.zoom-factor = Fator de zoom
+4
View File
@@ -1554,6 +1554,10 @@ common =
.user-preferences = Пользовательские настройки
.zoom = Зумирование
.reverse-mouse-wheel-zoom-zoomwheel = Обратить зумирование колесом мыши (ZOOMWHEEL)
.navigation-style = Стиль навигации
.nav-style-cad = CAD: Shift + средняя кнопка — вращение
.nav-style-blender = Blender: средняя кнопка — вращение, Shift — сдвиг
.nav-style-catia = CATIA: средняя + левая кнопка — вращение
.touchpad-scroll-pans-ctrl-scroll-or-pinch-zooms = Тачпад: прокрутка панорамирует, Ctrl+прокрутка или щипок масштабирует
.interface-scale = Масштаб интерфейса
.zoom-factor = Коэффициент зумирования
+4
View File
@@ -1537,6 +1537,10 @@ common =
.user-preferences = Kullanıcı tercihleri
.zoom = Yakınlaştırma
.reverse-mouse-wheel-zoom-zoomwheel = Fare tekerleği yakınlaştırmasını ters çevir (ZOOMWHEEL)
.navigation-style = Gezinme stili
.nav-style-cad = CAD: Shift + orta tuş döndürür
.nav-style-blender = Blender: orta tuş döndürür, Shift kaydırır
.nav-style-catia = CATIA: orta + sol tuş döndürür
.touchpad-scroll-pans-ctrl-scroll-or-pinch-zooms = Dokunmatik yüzey: kaydırma kaydırır, Ctrl+kaydırma veya sıkıştırma yakınlaştırır
.interface-scale = Arayüz ölçeği
.zoom-factor = Yakınlaştırma çarpanı
+4
View File
@@ -1538,6 +1538,10 @@ common =
.user-preferences = 用户首选项
.zoom = 缩放
.reverse-mouse-wheel-zoom-zoomwheel = 反转鼠标滚轮缩放方向 (ZOOMWHEEL)
.navigation-style = 导航样式
.nav-style-cad = CAD:Shift + 中键旋转
.nav-style-blender = Blender:中键旋转,Shift 平移
.nav-style-catia = CATIA:中键 + 左键旋转
.touchpad-scroll-pans-ctrl-scroll-or-pinch-zooms = 触控板:滚动平移,Ctrl+滚动或捏合缩放
.interface-scale = 界面缩放
.zoom-factor = 缩放系数
+4
View File
@@ -1550,6 +1550,10 @@ common =
.user-preferences = 使用者偏好設定
.zoom = 縮放
.reverse-mouse-wheel-zoom-zoomwheel = 反轉滑鼠滾輪縮放方向 (ZOOMWHEEL)
.navigation-style = 導覽樣式
.nav-style-cad = CAD:Shift + 中鍵旋轉
.nav-style-blender = Blender:中鍵旋轉,Shift 平移
.nav-style-catia = CATIA:中鍵 + 左鍵旋轉
.touchpad-scroll-pans-ctrl-scroll-or-pinch-zooms = 觸控板:捲動平移,Ctrl+捲動或捏合縮放
.interface-scale = 介面縮放
.zoom-factor = 縮放係數
+8
View File
@@ -650,6 +650,11 @@ pub(super) struct OpenCADStudio {
polar_increment_deg: f32,
/// Reverse the mouse-wheel zoom direction when true (ZOOMWHEEL = 1).
zoom_wheel_reversed: bool,
/// Which mouse gestures pan and orbit the model view.
navigation_style: crate::app::settings::NavigationStyle,
/// CATIA navigation: the left button went down while the middle one was
/// held, so the middle drag orbits until it is released.
nav_left_with_middle: bool,
/// Scroll pans and Ctrl+scroll zooms (touchpads); see `scroll_intent`.
touchpad_pan: bool,
/// Multi-finger gestures on a touch screen.
@@ -2657,6 +2662,7 @@ pub enum Message {
CommandLineOpacityChanged(u8),
/// Toggle reversing the mouse-wheel zoom direction (ZOOMWHEEL).
ZoomWheelReversedChanged(bool),
NavigationStyleChanged(crate::app::settings::NavigationStyle),
TouchpadPanChanged(bool),
/// Options: show the pull-down menus (MENUBAR).
MenuBarChanged(bool),
@@ -4632,6 +4638,8 @@ impl OpenCADStudio {
polar_mode: false,
polar_increment_deg: 45.0,
zoom_wheel_reversed: false,
navigation_style: Default::default(),
nav_left_with_middle: false,
touchpad_pan: false,
touch: Default::default(),
touch_offset: None,
+29
View File
@@ -204,6 +204,33 @@ pub fn zoom_notch_percent(factor: i32) -> f32 {
(1.0 - ratio) * 100.0
}
/// Which mouse gestures pan and orbit the model view.
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum NavigationStyle {
/// Middle button pans; Shift + middle button orbits.
#[default]
Cad,
/// Middle button orbits; Shift + middle button pans.
Blender,
/// Middle button pans; middle and left buttons together orbit.
Catia,
}
impl NavigationStyle {
pub const ALL: [NavigationStyle; 3] = [Self::Cad, Self::Blender, Self::Catia];
}
impl std::fmt::Display for NavigationStyle {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.write_str(&match self {
Self::Cad => crate::t!("CAD: Shift + middle button orbits"),
Self::Blender => crate::t!("Blender: middle button orbits, Shift pans"),
Self::Catia => crate::t!("CATIA: middle + left button orbits"),
})
}
}
/// Active pair of axes while isometric drafting is enabled.
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
pub enum IsoPlane {
@@ -388,6 +415,7 @@ pub struct UserSettings {
pub polar: bool,
pub polar_increment_deg: f32,
pub zoom_wheel_reversed: bool,
pub navigation_style: NavigationStyle,
/// Scrolling pans and Ctrl+scroll (a touchpad pinch) zooms, for a
/// touchpad that reports two-finger drags as wheel scrolls.
pub touchpad_pan: bool,
@@ -891,6 +919,7 @@ impl Default for UserSettings {
polar: false,
polar_increment_deg: 45.0,
zoom_wheel_reversed: false,
navigation_style: NavigationStyle::Cad,
touchpad_pan: false,
ui_scale_percent: 100,
zoom_factor: 60,
+2
View File
@@ -778,6 +778,7 @@ impl OpenCADStudio {
polar: self.polar_mode,
polar_increment_deg: self.polar_increment_deg,
zoom_wheel_reversed: self.zoom_wheel_reversed,
navigation_style: self.navigation_style,
touchpad_pan: self.touchpad_pan,
ui_scale_percent: self.ui_scale_percent,
zoom_factor: self.zoom_factor,
@@ -913,6 +914,7 @@ impl OpenCADStudio {
self.polar_mode = s.polar;
self.polar_increment_deg = s.polar_increment_deg;
self.zoom_wheel_reversed = s.zoom_wheel_reversed;
self.navigation_style = s.navigation_style;
self.touchpad_pan = s.touchpad_pan;
self.ui_scale_percent = crate::app::settings::clamp_ui_scale(s.ui_scale_percent);
self.zoom_factor = crate::app::settings::clamp_zoom_factor(s.zoom_factor);
+26
View File
@@ -4482,6 +4482,25 @@ impl OpenCADStudio {
Task::none()
}
// CATIA navigation: the left button pressed during a middle drag
// turns the drag into an orbit instead of starting a pick.
Message::ViewportLeftPressAt(_) | Message::ViewportLeftPress | Message::PanePress(_)
if self.navigation_style == crate::app::settings::NavigationStyle::Catia
&& self.tabs[self.active_tab]
.scene
.selection
.borrow()
.input
.middle_down =>
{
self.nav_left_with_middle = true;
Task::none()
}
Message::ViewportLeftRelease | Message::PaneRelease(_) if self.nav_left_with_middle => {
self.nav_left_with_middle = false;
Task::none()
}
Message::ViewportMove(p) => self.on_viewport_move(p),
Message::ViewportExit => self.on_viewport_exit(),
@@ -4686,6 +4705,7 @@ impl OpenCADStudio {
}
Message::ViewportMiddleRelease => {
self.nav_left_with_middle = false;
let i = self.active_tab;
let mut sel = self.tabs[i].scene.selection.borrow_mut();
sel.input.middle_down = false;
@@ -9225,6 +9245,12 @@ impl OpenCADStudio {
Task::none()
}
Message::NavigationStyleChanged(style) => {
self.navigation_style = style;
self.persist_settings_if_changed();
Task::none()
}
Message::MenuBarChanged(shown) => {
self.show_menu_bar = shown;
self.persist_settings_if_changed();
+13 -1
View File
@@ -1416,7 +1416,7 @@ impl OpenCADStudio {
// — the requested Zoom=wheel / Pan=MMB / Rotate=Shift+MMB
// scheme (#229). Floating viewports and paper keep the
// plain MMB pan.
if self.shift_down || self.tabs[i].orbit_mode {
if self.middle_drag_orbits(i) {
if self.tabs[i].scene.active_viewport.is_some() {
// Orbit the floating viewport's own model view.
drop(sel);
@@ -3165,6 +3165,18 @@ impl OpenCADStudio {
Task::none()
}
/// Whether a middle-button drag orbits rather than pans, by the
/// navigation style (an armed orbit tool always orbits).
fn middle_drag_orbits(&self, i: usize) -> bool {
use crate::app::settings::NavigationStyle;
self.tabs[i].orbit_mode
|| match self.navigation_style {
NavigationStyle::Cad => self.shift_down,
NavigationStyle::Blender => !self.shift_down,
NavigationStyle::Catia => self.nav_left_with_middle,
}
}
pub(crate) fn on_viewport_exit(&mut self) -> Task<Message> {
let i = self.active_tab;
self.tabs[i].measurement.live_visible = false;
+1
View File
@@ -312,6 +312,7 @@ impl OpenCADStudio {
show_ribbon: !self.ribbon_closed,
hatch_associative: self.hatch_associative,
zoom_wheel_reversed: self.zoom_wheel_reversed,
navigation_style: self.navigation_style,
touchpad_pan: self.touchpad_pan,
ui_scale_percent: self.ui_scale_percent,
zoom_factor: self.zoom_factor,
+4
View File
@@ -5070,6 +5070,10 @@ pub(super) fn message_attribute(source: &str) -> Option<(&'static str, &'static
"User Preferences" => Some(("common", "user-preferences")),
"Zoom" => Some(("common", "zoom")),
"Reverse mouse wheel zoom (ZOOMWHEEL)" => Some(("common", "reverse-mouse-wheel-zoom-zoomwheel")),
"Navigation style" => Some(("common", "navigation-style")),
"CAD: Shift + middle button orbits" => Some(("common", "nav-style-cad")),
"Blender: middle button orbits, Shift pans" => Some(("common", "nav-style-blender")),
"CATIA: middle + left button orbits" => Some(("common", "nav-style-catia")),
"Touchpad: scroll pans, Ctrl+scroll or pinch zooms" => Some(("common", "touchpad-scroll-pans-ctrl-scroll-or-pinch-zooms")),
"Interface scale" => Some(("common", "interface-scale")),
"Zoom factor" => Some(("common", "zoom-factor")),
+12
View File
@@ -63,6 +63,8 @@ pub struct AppPrefs {
pub hatch_associative: bool,
/// ZOOMWHEEL: reverse the mouse-wheel zoom direction.
pub zoom_wheel_reversed: bool,
/// Which mouse gestures pan and orbit the model view.
pub navigation_style: crate::app::settings::NavigationStyle,
/// Scroll pans and Ctrl+scroll zooms (touchpads).
pub touchpad_pan: bool,
/// Interface scale in percent.
@@ -1274,6 +1276,16 @@ pub fn view_window<'a>(
Space::new().height(10),
spacemouse,
Space::new().height(12),
text(crate::t!("Navigation style")).size(15),
Space::new().height(10),
iced::widget::pick_list(
Some(prefs.navigation_style),
crate::app::settings::NavigationStyle::ALL,
|style| style.to_string(),
)
.on_select(Message::NavigationStyleChanged)
.text_size(12),
Space::new().height(12),
text(crate::t!("Zoom")).size(15),
Space::new().height(10),
row![