@@ -973,13 +973,76 @@ app.whenReady().then(() =>
973
973
} )
974
974
}
975
975
} ;
976
-
976
+
977
+ var zoomSteps = [ 0.25 , 0.33 , 0.5 , 0.67 , 0.75 , 0.8 , 0.9 , 1 ,
978
+ 1.1 , 1.25 , 1.5 , 1.75 , 2 , 2.5 , 3 , 4 , 5 ] ;
979
+
980
+ // Zooms to the next zoom step
981
+ function zoomInFn ( )
982
+ {
983
+ var zoomFactor = win . webContents . zoomFactor ;
984
+ var newZoomFactor = zoomSteps [ zoomSteps . length - 1 ] ;
985
+
986
+ for ( var i = 0 ; i < zoomSteps . length ; i ++ )
987
+ {
988
+ if ( zoomSteps [ i ] - zoomFactor > 0.01 )
989
+ {
990
+ newZoomFactor = zoomSteps [ i ] ;
991
+ break ;
992
+ }
993
+ }
994
+
995
+ win . webContents . zoomFactor = newZoomFactor ;
996
+ } ;
997
+
998
+ // Zooms to the previous zoom step
999
+ function zoomOutFn ( )
1000
+ {
1001
+ var zoomFactor = win . webContents . zoomFactor ;
1002
+ var newZoomFactor = zoomSteps [ 0 ] ;
1003
+
1004
+ for ( var i = zoomSteps . length - 1 ; i >= 0 ; i -- )
1005
+ {
1006
+ if ( zoomSteps [ i ] - zoomFactor < - 0.01 )
1007
+ {
1008
+ newZoomFactor = zoomSteps [ i ] ;
1009
+ break ;
1010
+ }
1011
+ }
1012
+
1013
+ win . webContents . zoomFactor = newZoomFactor ;
1014
+ } ;
1015
+
1016
+ // Resets the zoom factor
1017
+ function resetZoomFn ( )
1018
+ {
1019
+ win . webContents . zoomFactor = 1 ;
1020
+ } ;
1021
+
977
1022
let checkForUpdates = {
978
1023
label : 'Check for updates' ,
979
1024
click : checkForUpdatesFn
980
1025
}
981
1026
1027
+ let zoomIn = {
1028
+ label : 'Zoom In' ,
1029
+ click : zoomInFn
1030
+ } ;
1031
+
1032
+ let zoomOut = {
1033
+ label : 'Zoom Out' ,
1034
+ click : zoomOutFn
1035
+ } ;
1036
+
1037
+ let resetZoom = {
1038
+ label : 'Actual Size' ,
1039
+ click : resetZoomFn
1040
+ } ;
1041
+
982
1042
ipcMain . on ( 'checkForUpdates' , checkForUpdatesFn ) ;
1043
+ ipcMain . on ( 'zoomIn' , zoomInFn ) ;
1044
+ ipcMain . on ( 'zoomOut' , zoomOutFn ) ;
1045
+ ipcMain . on ( 'resetZoom' , resetZoomFn ) ;
983
1046
984
1047
if ( isMac )
985
1048
{
@@ -995,11 +1058,15 @@ app.whenReady().then(() =>
995
1058
click ( ) { shell . openExternal ( 'https://github.com/jgraph/drawio-desktop/issues' ) ; }
996
1059
} ,
997
1060
checkForUpdates ,
1061
+ { type : 'separator' } ,
1062
+ resetZoom ,
1063
+ zoomIn ,
1064
+ zoomOut ,
998
1065
{ type : 'separator' } ,
999
1066
{ role : 'hide' } ,
1000
1067
{ role : 'hideothers' } ,
1001
1068
{ role : 'unhide' } ,
1002
- { type : 'separator' } ,
1069
+ { type : 'separator' } ,
1003
1070
{ role : 'quit' }
1004
1071
]
1005
1072
} , {
0 commit comments