mirror of
https://github.com/lobehub/lobehub.git
synced 2026-03-26 13:19:34 +07:00
🐛 fix(desktop): remove redundant accelerators from menu role items
Electron's role-based menu items already provide default accelerators. Explicitly setting them can override defaults and cause issues like Ctrl+Plus (requiring Shift) not working for zoom in on Windows. Only kept intentional overrides: F12 for devTools, F11 for fullscreen on macOS, Alt+F4 for close and Ctrl+Y for redo on Windows.
This commit is contained in:
@@ -104,16 +104,8 @@ export class LinuxMenu extends BaseMenuPlatform implements IMenuPlatform {
|
||||
label: t('common.checkUpdates'),
|
||||
},
|
||||
{ type: 'separator' },
|
||||
{
|
||||
accelerator: 'Ctrl+W',
|
||||
label: t('window.close'),
|
||||
role: 'close',
|
||||
},
|
||||
{
|
||||
accelerator: 'Ctrl+M',
|
||||
label: t('window.minimize'),
|
||||
role: 'minimize',
|
||||
},
|
||||
{ label: t('window.close'), role: 'close' },
|
||||
{ label: t('window.minimize'), role: 'minimize' },
|
||||
{ type: 'separator' },
|
||||
{ label: t('file.quit'), role: 'quit' },
|
||||
],
|
||||
@@ -121,24 +113,24 @@ export class LinuxMenu extends BaseMenuPlatform implements IMenuPlatform {
|
||||
{
|
||||
label: t('edit.title'),
|
||||
submenu: [
|
||||
{ accelerator: 'Ctrl+Z', label: t('edit.undo'), role: 'undo' },
|
||||
{ accelerator: 'Ctrl+Shift+Z', label: t('edit.redo'), role: 'redo' },
|
||||
{ label: t('edit.undo'), role: 'undo' },
|
||||
{ label: t('edit.redo'), role: 'redo' },
|
||||
{ type: 'separator' },
|
||||
{ accelerator: 'Ctrl+X', label: t('edit.cut'), role: 'cut' },
|
||||
{ accelerator: 'Ctrl+C', label: t('edit.copy'), role: 'copy' },
|
||||
{ accelerator: 'Ctrl+V', label: t('edit.paste'), role: 'paste' },
|
||||
{ label: t('edit.cut'), role: 'cut' },
|
||||
{ label: t('edit.copy'), role: 'copy' },
|
||||
{ label: t('edit.paste'), role: 'paste' },
|
||||
{ type: 'separator' },
|
||||
{ accelerator: 'Ctrl+A', label: t('edit.selectAll'), role: 'selectAll' },
|
||||
{ label: t('edit.selectAll'), role: 'selectAll' },
|
||||
],
|
||||
},
|
||||
{
|
||||
label: t('view.title'),
|
||||
submenu: [
|
||||
{ accelerator: 'Ctrl+0', label: t('view.resetZoom'), role: 'resetZoom' },
|
||||
{ accelerator: 'Ctrl+Plus', label: t('view.zoomIn'), role: 'zoomIn' },
|
||||
{ accelerator: 'Ctrl+-', label: t('view.zoomOut'), role: 'zoomOut' },
|
||||
{ label: t('view.resetZoom'), role: 'resetZoom' },
|
||||
{ label: t('view.zoomIn'), role: 'zoomIn' },
|
||||
{ label: t('view.zoomOut'), role: 'zoomOut' },
|
||||
{ type: 'separator' },
|
||||
{ accelerator: 'F11', label: t('view.toggleFullscreen'), role: 'togglefullscreen' },
|
||||
{ label: t('view.toggleFullscreen'), role: 'togglefullscreen' },
|
||||
],
|
||||
},
|
||||
{
|
||||
@@ -220,9 +212,9 @@ export class LinuxMenu extends BaseMenuPlatform implements IMenuPlatform {
|
||||
template.push({
|
||||
label: t('dev.title'),
|
||||
submenu: [
|
||||
{ accelerator: 'Ctrl+R', label: t('dev.reload'), role: 'reload' },
|
||||
{ accelerator: 'Ctrl+Shift+R', label: t('dev.forceReload'), role: 'forceReload' },
|
||||
{ accelerator: 'Ctrl+Shift+I', label: t('dev.devTools'), role: 'toggleDevTools' },
|
||||
{ label: t('dev.reload'), role: 'reload' },
|
||||
{ label: t('dev.forceReload'), role: 'forceReload' },
|
||||
{ label: t('dev.devTools'), role: 'toggleDevTools' },
|
||||
{ type: 'separator' },
|
||||
{
|
||||
click: () => {
|
||||
@@ -365,8 +357,8 @@ export class LinuxMenu extends BaseMenuPlatform implements IMenuPlatform {
|
||||
|
||||
// Standard edit actions for chat
|
||||
template.push(
|
||||
{ accelerator: 'Ctrl+C', label: t('edit.copy'), role: 'copy' },
|
||||
{ accelerator: 'Ctrl+V', label: t('edit.paste'), role: 'paste' },
|
||||
{ label: t('edit.copy'), role: 'copy' },
|
||||
{ label: t('edit.paste'), role: 'paste' },
|
||||
{ type: 'separator' },
|
||||
{ label: t('edit.selectAll'), role: 'selectAll' },
|
||||
);
|
||||
@@ -406,11 +398,11 @@ export class LinuxMenu extends BaseMenuPlatform implements IMenuPlatform {
|
||||
|
||||
// Standard edit actions for editor
|
||||
template.push(
|
||||
{ accelerator: 'Ctrl+X', label: t('edit.cut'), role: 'cut' },
|
||||
{ accelerator: 'Ctrl+C', label: t('edit.copy'), role: 'copy' },
|
||||
{ accelerator: 'Ctrl+V', label: t('edit.paste'), role: 'paste' },
|
||||
{ label: t('edit.cut'), role: 'cut' },
|
||||
{ label: t('edit.copy'), role: 'copy' },
|
||||
{ label: t('edit.paste'), role: 'paste' },
|
||||
{ type: 'separator' },
|
||||
{ accelerator: 'Ctrl+A', label: t('edit.selectAll'), role: 'selectAll' },
|
||||
{ label: t('edit.selectAll'), role: 'selectAll' },
|
||||
{ type: 'separator' },
|
||||
{ label: t('edit.delete'), role: 'delete' },
|
||||
);
|
||||
|
||||
@@ -101,26 +101,11 @@ export class MacOSMenu extends BaseMenuPlatform implements IMenuPlatform {
|
||||
submenu: [],
|
||||
},
|
||||
{ type: 'separator' },
|
||||
{
|
||||
accelerator: 'Command+H',
|
||||
label: t('macOS.hide', { appName }),
|
||||
role: 'hide',
|
||||
},
|
||||
{
|
||||
accelerator: 'Command+Alt+H',
|
||||
label: t('macOS.hideOthers'),
|
||||
role: 'hideOthers',
|
||||
},
|
||||
{
|
||||
label: t('macOS.unhide'),
|
||||
role: 'unhide',
|
||||
},
|
||||
{ label: t('macOS.hide', { appName }), role: 'hide' },
|
||||
{ label: t('macOS.hideOthers'), role: 'hideOthers' },
|
||||
{ label: t('macOS.unhide'), role: 'unhide' },
|
||||
{ type: 'separator' },
|
||||
{
|
||||
accelerator: 'Command+Q',
|
||||
label: t('file.quit'),
|
||||
role: 'quit',
|
||||
},
|
||||
{ label: t('file.quit'), role: 'quit' },
|
||||
],
|
||||
},
|
||||
{
|
||||
@@ -164,22 +149,18 @@ export class MacOSMenu extends BaseMenuPlatform implements IMenuPlatform {
|
||||
label: t('file.newPage'),
|
||||
},
|
||||
{ type: 'separator' },
|
||||
{
|
||||
accelerator: 'Command+W',
|
||||
label: t('window.close'),
|
||||
role: 'close',
|
||||
},
|
||||
{ label: t('window.close'), role: 'close' },
|
||||
],
|
||||
},
|
||||
{
|
||||
label: t('edit.title'),
|
||||
submenu: [
|
||||
{ accelerator: 'Command+Z', label: t('edit.undo'), role: 'undo' },
|
||||
{ accelerator: 'Shift+Command+Z', label: t('edit.redo'), role: 'redo' },
|
||||
{ label: t('edit.undo'), role: 'undo' },
|
||||
{ label: t('edit.redo'), role: 'redo' },
|
||||
{ type: 'separator' },
|
||||
{ accelerator: 'Command+X', label: t('edit.cut'), role: 'cut' },
|
||||
{ accelerator: 'Command+C', label: t('edit.copy'), role: 'copy' },
|
||||
{ accelerator: 'Command+V', label: t('edit.paste'), role: 'paste' },
|
||||
{ label: t('edit.cut'), role: 'cut' },
|
||||
{ label: t('edit.copy'), role: 'copy' },
|
||||
{ label: t('edit.paste'), role: 'paste' },
|
||||
{ type: 'separator' },
|
||||
{
|
||||
label: t('edit.speech'),
|
||||
@@ -189,7 +170,7 @@ export class MacOSMenu extends BaseMenuPlatform implements IMenuPlatform {
|
||||
],
|
||||
},
|
||||
{ type: 'separator' },
|
||||
{ accelerator: 'Command+A', label: t('edit.selectAll'), role: 'selectAll' },
|
||||
{ label: t('edit.selectAll'), role: 'selectAll' },
|
||||
],
|
||||
},
|
||||
{
|
||||
@@ -199,9 +180,9 @@ export class MacOSMenu extends BaseMenuPlatform implements IMenuPlatform {
|
||||
{ label: t('view.forceReload'), role: 'forceReload' },
|
||||
{ accelerator: 'F12', label: t('dev.devTools'), role: 'toggleDevTools' },
|
||||
{ type: 'separator' },
|
||||
{ accelerator: 'Command+0', label: t('view.resetZoom'), role: 'resetZoom' },
|
||||
{ accelerator: 'Command+Plus', label: t('view.zoomIn'), role: 'zoomIn' },
|
||||
{ accelerator: 'Command+-', label: t('view.zoomOut'), role: 'zoomOut' },
|
||||
{ label: t('view.resetZoom'), role: 'resetZoom' },
|
||||
{ label: t('view.zoomIn'), role: 'zoomIn' },
|
||||
{ label: t('view.zoomOut'), role: 'zoomOut' },
|
||||
{ type: 'separator' },
|
||||
{ accelerator: 'F11', label: t('view.toggleFullscreen'), role: 'togglefullscreen' },
|
||||
],
|
||||
@@ -560,8 +541,8 @@ export class MacOSMenu extends BaseMenuPlatform implements IMenuPlatform {
|
||||
|
||||
// Standard edit actions for chat (copy/paste focused)
|
||||
template.push(
|
||||
{ accelerator: 'Command+C', label: t('edit.copy'), role: 'copy' },
|
||||
{ accelerator: 'Command+V', label: t('edit.paste'), role: 'paste' },
|
||||
{ label: t('edit.copy'), role: 'copy' },
|
||||
{ label: t('edit.paste'), role: 'paste' },
|
||||
{ type: 'separator' },
|
||||
{ label: t('edit.selectAll'), role: 'selectAll' },
|
||||
);
|
||||
@@ -613,11 +594,11 @@ export class MacOSMenu extends BaseMenuPlatform implements IMenuPlatform {
|
||||
|
||||
// Standard edit actions for editor (full edit capabilities)
|
||||
template.push(
|
||||
{ accelerator: 'Command+X', label: t('edit.cut'), role: 'cut' },
|
||||
{ accelerator: 'Command+C', label: t('edit.copy'), role: 'copy' },
|
||||
{ accelerator: 'Command+V', label: t('edit.paste'), role: 'paste' },
|
||||
{ label: t('edit.cut'), role: 'cut' },
|
||||
{ label: t('edit.copy'), role: 'copy' },
|
||||
{ label: t('edit.paste'), role: 'paste' },
|
||||
{ type: 'separator' },
|
||||
{ accelerator: 'Command+A', label: t('edit.selectAll'), role: 'selectAll' },
|
||||
{ label: t('edit.selectAll'), role: 'selectAll' },
|
||||
{ type: 'separator' },
|
||||
{ label: t('edit.delete'), role: 'delete' },
|
||||
);
|
||||
|
||||
@@ -108,11 +108,7 @@ export class WindowsMenu extends BaseMenuPlatform implements IMenuPlatform {
|
||||
label: t('window.close'),
|
||||
role: 'close',
|
||||
},
|
||||
{
|
||||
accelerator: 'Ctrl+M',
|
||||
label: t('window.minimize'),
|
||||
role: 'minimize',
|
||||
},
|
||||
{ label: t('window.minimize'), role: 'minimize' },
|
||||
{ type: 'separator' },
|
||||
{ label: t('file.quit'), role: 'quit' },
|
||||
],
|
||||
@@ -120,24 +116,24 @@ export class WindowsMenu extends BaseMenuPlatform implements IMenuPlatform {
|
||||
{
|
||||
label: t('edit.title'),
|
||||
submenu: [
|
||||
{ accelerator: 'Ctrl+Z', label: t('edit.undo'), role: 'undo' },
|
||||
{ label: t('edit.undo'), role: 'undo' },
|
||||
{ accelerator: 'Ctrl+Y', label: t('edit.redo'), role: 'redo' },
|
||||
{ type: 'separator' },
|
||||
{ accelerator: 'Ctrl+X', label: t('edit.cut'), role: 'cut' },
|
||||
{ accelerator: 'Ctrl+C', label: t('edit.copy'), role: 'copy' },
|
||||
{ accelerator: 'Ctrl+V', label: t('edit.paste'), role: 'paste' },
|
||||
{ label: t('edit.cut'), role: 'cut' },
|
||||
{ label: t('edit.copy'), role: 'copy' },
|
||||
{ label: t('edit.paste'), role: 'paste' },
|
||||
{ type: 'separator' },
|
||||
{ accelerator: 'Ctrl+A', label: t('edit.selectAll'), role: 'selectAll' },
|
||||
{ label: t('edit.selectAll'), role: 'selectAll' },
|
||||
],
|
||||
},
|
||||
{
|
||||
label: t('view.title'),
|
||||
submenu: [
|
||||
{ accelerator: 'Ctrl+0', label: t('view.resetZoom'), role: 'resetZoom' },
|
||||
{ accelerator: 'Ctrl+Plus', label: t('view.zoomIn'), role: 'zoomIn' },
|
||||
{ accelerator: 'Ctrl+-', label: t('view.zoomOut'), role: 'zoomOut' },
|
||||
{ label: t('view.resetZoom'), role: 'resetZoom' },
|
||||
{ label: t('view.zoomIn'), role: 'zoomIn' },
|
||||
{ label: t('view.zoomOut'), role: 'zoomOut' },
|
||||
{ type: 'separator' },
|
||||
{ accelerator: 'F11', label: t('view.toggleFullscreen'), role: 'togglefullscreen' },
|
||||
{ label: t('view.toggleFullscreen'), role: 'togglefullscreen' },
|
||||
],
|
||||
},
|
||||
{
|
||||
@@ -200,9 +196,9 @@ export class WindowsMenu extends BaseMenuPlatform implements IMenuPlatform {
|
||||
template.push({
|
||||
label: t('dev.title'),
|
||||
submenu: [
|
||||
{ accelerator: 'Ctrl+R', label: t('dev.reload'), role: 'reload' },
|
||||
{ accelerator: 'Ctrl+Shift+R', label: t('dev.forceReload'), role: 'forceReload' },
|
||||
{ accelerator: 'Ctrl+Shift+I', label: t('dev.devTools'), role: 'toggleDevTools' },
|
||||
{ label: t('dev.reload'), role: 'reload' },
|
||||
{ label: t('dev.forceReload'), role: 'forceReload' },
|
||||
{ label: t('dev.devTools'), role: 'toggleDevTools' },
|
||||
{ type: 'separator' },
|
||||
{
|
||||
click: () => {
|
||||
@@ -345,8 +341,8 @@ export class WindowsMenu extends BaseMenuPlatform implements IMenuPlatform {
|
||||
|
||||
// Standard edit actions for chat
|
||||
template.push(
|
||||
{ accelerator: 'Ctrl+C', label: t('edit.copy'), role: 'copy' },
|
||||
{ accelerator: 'Ctrl+V', label: t('edit.paste'), role: 'paste' },
|
||||
{ label: t('edit.copy'), role: 'copy' },
|
||||
{ label: t('edit.paste'), role: 'paste' },
|
||||
{ type: 'separator' },
|
||||
{ label: t('edit.selectAll'), role: 'selectAll' },
|
||||
);
|
||||
@@ -386,11 +382,11 @@ export class WindowsMenu extends BaseMenuPlatform implements IMenuPlatform {
|
||||
|
||||
// Standard edit actions for editor
|
||||
template.push(
|
||||
{ accelerator: 'Ctrl+X', label: t('edit.cut'), role: 'cut' },
|
||||
{ accelerator: 'Ctrl+C', label: t('edit.copy'), role: 'copy' },
|
||||
{ accelerator: 'Ctrl+V', label: t('edit.paste'), role: 'paste' },
|
||||
{ label: t('edit.cut'), role: 'cut' },
|
||||
{ label: t('edit.copy'), role: 'copy' },
|
||||
{ label: t('edit.paste'), role: 'paste' },
|
||||
{ type: 'separator' },
|
||||
{ accelerator: 'Ctrl+A', label: t('edit.selectAll'), role: 'selectAll' },
|
||||
{ label: t('edit.selectAll'), role: 'selectAll' },
|
||||
{ type: 'separator' },
|
||||
{ label: t('edit.delete'), role: 'delete' },
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user