diff --git a/src/Components/Accordion/Component_Accordion.re b/src/Components/Accordion/Component_Accordion.re index b3dc5eecb3..c74d133ab8 100644 --- a/src/Components/Accordion/Component_Accordion.re +++ b/src/Components/Accordion/Component_Accordion.re @@ -135,6 +135,7 @@ module Common = { module VimList = { let make = ( + ~config, ~showCount=true, ~title, ~expanded, @@ -150,6 +151,7 @@ module VimList = { let count = Component_VimList.count(model); let contents = _ = - (~isActive, ~font, ~focusedIndex, ~theme, ~model, ~dispatch, ~render, ()) => { + ( + ~config, + ~isActive, + ~font, + ~focusedIndex, + ~theme, + ~model, + ~dispatch, + ~render, + (), + ) => { component(hooks => { let {rowHeight, viewportWidth, viewportHeight, _} = model; @@ -1005,8 +1015,12 @@ module View = { hooks, ); let scroll = (wheelEvent: NodeEvents.mouseWheelEventParams) => { - let delta = - wheelEvent.deltaY *. float(- Constants.scrollWheelMultiplier); + let mouseWheelPixels = + Feature_Configuration.GlobalConfiguration.Editor.mouseWheelScrollPixels. + get( + config, + ); + let delta = wheelEvent.deltaY *. (-1.) *. mouseWheelPixels; dispatch(MouseWheelScrolled({delta: delta})); }; diff --git a/src/Components/VimList/dune b/src/Components/VimList/dune index a1ed07148b..3ed7ca4e4a 100644 --- a/src/Components/VimList/dune +++ b/src/Components/VimList/dune @@ -3,6 +3,7 @@ (public_name Oni2.component.vimList) (inline_tests) (libraries Oni2.core Oni2.component.inputText Oni2.components Revery + Oni2.feature.configuration isolinear Oni2.feature.commands Oni2.feature.sneak) (preprocess (pps ppx_inline_test ppx_let ppx_deriving.show brisk-reconciler.ppx))) diff --git a/src/Components/VimTree/Component_VimTree.re b/src/Components/VimTree/Component_VimTree.re index aece9b5667..a5072c9ad2 100644 --- a/src/Components/VimTree/Component_VimTree.re +++ b/src/Components/VimTree/Component_VimTree.re @@ -529,6 +529,7 @@ module View = { }; { +let update = (~config, editor, msg) => { + let mouseWheelScroll = + Feature_Configuration.GlobalConfiguration.Editor.mouseWheelScrollPixels.get( + config, + ); switch (msg) { | VerticalScrollbarAfterTrackClicked({newPixelScrollY}) | VerticalScrollbarBeforeTrackClicked({newPixelScrollY}) @@ -50,8 +54,9 @@ let update = (editor, msg) => { ) | MinimapMouseWheel({deltaWheel}) => ( Editor.scrollDeltaPixelY( - ~animated=false, - ~pixelY=deltaWheel *. Constants.minimapWheelMultiplier, + ~animated=true, + ~pixelY= + deltaWheel *. mouseWheelScroll *. Constants.minimapWheelMultiplier, editor, ), Nothing, @@ -66,18 +71,24 @@ let update = (editor, msg) => { ) | EditorMouseWheel({deltaX, deltaY, shiftKey}) => ( Editor.scrollDeltaPixelXY( - ~animated=false, + ~animated=true, ~pixelX= - (shiftKey ? deltaY : deltaX) *. Constants.editorWheelMultiplier, - ~pixelY=(shiftKey ? 0. : deltaY) *. Constants.editorWheelMultiplier, + (shiftKey ? deltaY : deltaX) + *. mouseWheelScroll + *. Constants.editorWheelMultiplier, + ~pixelY= + (shiftKey ? 0. : deltaY) + *. mouseWheelScroll + *. Constants.editorWheelMultiplier, editor, ), Nothing, ) | VerticalScrollbarMouseWheel({deltaWheel}) => ( Editor.scrollDeltaPixelY( - ~animated=false, - ~pixelY=deltaWheel *. Constants.scrollbarWheelMultiplier, + ~animated=true, + ~pixelY= + deltaWheel *. mouseWheelScroll *. Constants.scrollbarWheelMultiplier, editor, ), Nothing, @@ -90,8 +101,9 @@ let update = (editor, msg) => { ) | HorizontalScrollbarMouseWheel({deltaWheel}) => ( Editor.scrollDeltaPixelX( - ~animated=false, - ~pixelX=deltaWheel *. Constants.scrollbarWheelMultiplier, + ~animated=true, + ~pixelX= + deltaWheel *. mouseWheelScroll *. Constants.scrollbarWheelMultiplier, editor, ), Nothing, diff --git a/src/Feature/Extensions/Feature_Extensions.rei b/src/Feature/Extensions/Feature_Extensions.rei index e2e0bf200e..aa478c0901 100644 --- a/src/Feature/Extensions/Feature_Extensions.rei +++ b/src/Feature/Extensions/Feature_Extensions.rei @@ -99,6 +99,7 @@ module ListView: { let make: ( ~key: Brisk_reconciler.Key.t=?, + ~config: Config.resolver, ~model: model, ~proxy: Service_Net.Proxy.t, ~theme: ColorTheme.Colors.t, diff --git a/src/Feature/Extensions/ListView.re b/src/Feature/Extensions/ListView.re index bd1bc9aae6..e4a0cde510 100644 --- a/src/Feature/Extensions/ListView.re +++ b/src/Feature/Extensions/ListView.re @@ -123,6 +123,7 @@ let versionToString: option(Semver.t) => string = let%component make = ( + ~config, ~model, ~proxy, ~theme, @@ -220,6 +221,7 @@ let%component make = [ , Isolinear.Sub.none, ~view= ( - ~config as _, + ~config, ~editorFont as _, ~font, ~isFocused, @@ -495,6 +495,7 @@ module Contributions = { ~model, ) => { + ( + ~config, + ~isFocused: bool, + ~model: t, + ~theme, + ~uiFont: UiFont.t, + ~dispatch, + (), + ) => { let innerElement = if (Component_VimList.count(model.notificationsView) == 0) { @@ -175,6 +183,7 @@ module View = { ; } else { { module View = { open Revery.UI; - let make = (~model, ~isActive, ~editorFont, ~uiFont, ~theme, ~dispatch, ()) => { + let make = + ( + ~config, + ~model, + ~isActive, + ~editorFont, + ~uiFont, + ~theme, + ~dispatch, + (), + ) => { model.output |> Option.map(model => { Isolinear.Sub.none, ~view= ( - ~config as _, + ~config, ~editorFont, ~font, ~isFocused, @@ -96,6 +107,7 @@ let pane = { ~model, ) => ; }; Option.value(~default=true); Isolinear.Effect.map(msg => Actions.Workspace(msg)); }; - let updateEditor = (~editorId, ~msg, ~client, layout) => { + let updateEditor = (~config, ~editorId, ~msg, ~client, layout) => { switch (Feature_Layout.editorById(editorId, layout)) { | Some(editor) => open Feature_Editor; - let (updatedEditor, outmsg) = update(editor, msg); + let (updatedEditor, outmsg) = update(~config, editor, msg); let layout = Feature_Layout.map( editor => Editor.getId(editor) == editorId ? updatedEditor : editor, @@ -174,6 +174,7 @@ module Internal = { let updateEditors = ( + ~config: Config.resolver, ~scope: EditorScope.t, ~msg: Feature_Editor.msg, ~client: Exthost.Client.t, @@ -187,14 +188,15 @@ module Internal = { let (layout, effects) = prev; let editorId = Feature_Editor.Editor.getId(editor); let (layout', effect') = - updateEditor(~editorId, ~msg, ~client, layout); + updateEditor(~config, ~editorId, ~msg, ~client, layout); (layout', [effect', ...effects]); }, (layout, []), layout, ); (layout', Isolinear.Effect.batch(effects)); - | Editor(editorId) => updateEditor(~client, ~editorId, ~msg, layout) + | Editor(editorId) => + updateEditor(~config, ~client, ~editorId, ~msg, layout) }; }; @@ -284,7 +286,6 @@ module Internal = { |> Feature_Layout.activeEditor |> Feature_Editor.Editor.getPrimaryCursor; - let config = Selectors.configResolver(state); let editor = Feature_Layout.activeEditor(state.layout); let maybeBuffer = Selectors.getActiveBuffer(state); @@ -300,8 +301,9 @@ module Internal = { let msg: Feature_Editor.msg = ModeChanged({allowAnimation, mode, effects}); let scope = EditorScope.Editor(activeEditorId); + let config = Selectors.configResolver(state); let (layout, editorEffect) = - updateEditors(~client, ~scope, ~msg, state.layout); + updateEditors(~config, ~client, ~scope, ~msg, state.layout); let isInInsertMode = Vim.Mode.isInsertOrSelect( @@ -2225,8 +2227,10 @@ let update = (state, eff); | Editor({scope, msg}) => + let config = Selectors.configResolver(state); let (layout, effect) = Internal.updateEditors( + ~config, ~client=extHostClient, ~scope, ~msg, diff --git a/src/UI/SideBarView.re b/src/UI/SideBarView.re index ae0ebd1084..894944b0d5 100644 --- a/src/UI/SideBarView.re +++ b/src/UI/SideBarView.re @@ -101,6 +101,7 @@ let make = (~key=?, ~config, ~theme, ~state: State.t, ~dispatch, ()) => { | SCM => { | Extensions => let extensionDispatch = msg => dispatch(Actions.Extensions(msg)); Feature_Proxy.proxy} theme