12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- --- a/chrome/browser/about_flags.cc
- +++ b/chrome/browser/about_flags.cc
- @@ -285,6 +285,16 @@ const FeatureEntry::Choice kShowAvatarBu
- "never"}
- };
-
- +const FeatureEntry::Choice kScrollEventChangesTab[] = {
- + {flags_ui::kGenericExperimentChoiceDefault, "", ""},
- + {"Always",
- + "scroll-tabs",
- + "always"},
- + {"Never",
- + "scroll-tabs",
- + "never"}
- +};
- +
- #if defined(USE_AURA)
- const FeatureEntry::Choice kPullToRefreshChoices[] = {
- {flags_ui::kGenericExperimentChoiceDefault, "", ""},
- @@ -4911,6 +4921,11 @@ const FeatureEntry kFeatureEntries[] = {
- FEATURE_VALUE_TYPE(
- autofill::features::kAutofillEnableAccountWalletStorage)},
-
- + {"scroll-tabs",
- + "Scroll switches tab",
- + "Switch to the left/right tab if the wheel-scroll happens over the tabstrip, or the empty space beside the tabstrip.", kOsDesktop,
- + MULTI_VALUE_TYPE(kScrollEventChangesTab)},
- +
- #if defined(OS_CHROMEOS)
- {"enable-zero-state-suggestions",
- flag_descriptions::kEnableZeroStateSuggestionsName,
- --- a/chrome/browser/ui/views/frame/browser_root_view.cc
- +++ b/chrome/browser/ui/views/frame/browser_root_view.cc
- @@ -9,6 +9,7 @@
- #include <utility>
-
- #include "base/bind.h"
- +#include "base/command_line.h"
- #include "base/metrics/user_metrics.h"
- #include "base/task/post_task.h"
- #include "base/task/thread_pool.h"
- @@ -100,6 +101,18 @@ int GetDropEffect(const ui::DropTargetEv
- return ui::DragDropTypes::DRAG_MOVE;
- }
-
- +bool ShouldScrollChangesTab() {
- + const std::string flag_value =
- + base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII("scroll-tabs");
- +
- + if (flag_value == "always")
- + return true;
- + else if (flag_value == "never")
- + return false;
- +
- + return browser_defaults::kScrollEventChangesTab;
- +}
- +
- } // namespace
-
- BrowserRootView::DropInfo::DropInfo() = default;
- @@ -114,7 +127,9 @@ const char BrowserRootView::kViewClassNa
-
- BrowserRootView::BrowserRootView(BrowserView* browser_view,
- views::Widget* widget)
- - : views::internal::RootView(widget), browser_view_(browser_view) {}
- + : views::internal::RootView(widget), browser_view_(browser_view) {
- + scroll_event_changes_tab_ = ShouldScrollChangesTab();
- +}
-
- BrowserRootView::~BrowserRootView() {
- // It's possible to destroy the browser while a drop is active. In this case,
- @@ -259,7 +274,7 @@ const char* BrowserRootView::GetClassNam
- }
-
- bool BrowserRootView::OnMouseWheel(const ui::MouseWheelEvent& event) {
- - if (browser_defaults::kScrollEventChangesTab) {
- + if (scroll_event_changes_tab_) {
- // Switch to the left/right tab if the wheel-scroll happens over the
- // tabstrip, or the empty space beside the tabstrip.
- views::View* hit_view = GetEventHandlerForPoint(event.location());
- --- a/chrome/browser/ui/views/frame/browser_root_view.h
- +++ b/chrome/browser/ui/views/frame/browser_root_view.h
- @@ -129,6 +129,8 @@ class BrowserRootView : public views::in
- int scroll_remainder_x_ = 0;
- int scroll_remainder_y_ = 0;
-
- + bool scroll_event_changes_tab_ = false;
- +
- std::unique_ptr<DropInfo> drop_info_;
-
- base::WeakPtrFactory<BrowserRootView> weak_ptr_factory_{this};
|