@@ -21,6 +21,8 @@ use crate::self_action;
2121use crate :: widgets:: tab:: { HistoryStatus , Tab } ;
2222
2323const ZOOM_CHANGE_FACTOR : f32 = 1.15 ;
24+ const ZOOM_MAX_FACTOR : f32 = 5.0 ;
25+
2426#[ derive( Debug , Clone , Default ) ]
2527pub ( crate ) struct Zoom {
2628 value : f32 ,
@@ -58,7 +60,6 @@ pub mod imp {
5860 pub ( crate ) action_previous : RefCell < Option < gio:: SimpleAction > > ,
5961 pub ( crate ) action_next : RefCell < Option < gio:: SimpleAction > > ,
6062 pub ( crate ) style_provider : RefCell < gtk:: CssProvider > ,
61-
6263 #[ property( get = Self :: zoom, set = Self :: set_zoom, type = f32 , member = value) ]
6364 pub ( crate ) zoom : RefCell < Zoom > ,
6465 }
@@ -98,7 +99,7 @@ pub mod imp {
9899 }
99100 fn set_zoom ( & self , v : f32 ) {
100101 let Zoom { value, provider } = & mut * self . zoom . borrow_mut ( ) ;
101- * value = v;
102+ * value = v. clamp ( 1.0 / ZOOM_MAX_FACTOR , ZOOM_MAX_FACTOR ) ;
102103 provider. load_from_data (
103104 format ! (
104105 "textview {{
@@ -200,6 +201,7 @@ impl Window {
200201 self_action ! ( self , "donate" , donate) ;
201202 self_action ! ( self , "zoom-in" , zoom_in) ;
202203 self_action ! ( self , "zoom-out" , zoom_out) ;
204+ self_action ! ( self , "reset-zoom" , reset_zoom) ;
203205
204206 let act_open_page = gio:: SimpleAction :: new ( "open-omni" , Some ( glib:: VariantTy :: STRING ) ) ;
205207 act_open_page. connect_activate (
@@ -227,6 +229,7 @@ impl Window {
227229 ) ;
228230 self . add_action ( & act_set_clipboard) ;
229231
232+ // Signals
230233 self . add_controller ( & imp. scroll_ctrl ) ;
231234 imp. scroll_ctrl
232235 . set_propagation_phase ( gtk:: PropagationPhase :: Capture ) ;
@@ -516,4 +519,7 @@ impl Window {
516519 fn zoom_out ( & self ) {
517520 self . set_zoom ( & ( self . zoom ( ) * 1.0 / ZOOM_CHANGE_FACTOR ) ) ;
518521 }
522+ fn reset_zoom ( & self ) {
523+ self . set_zoom ( & 1.0 ) ;
524+ }
519525}
0 commit comments