Skip to content

Commit 8355412

Browse files
authored
Merge pull request #27841 from brave/fix_resize_cursor_side_panel
Fixed cursor is not changed to resize when hovered to sidebar resize area
2 parents fdc8ea8 + f9d9a72 commit 8355412

File tree

1 file changed

+35
-2
lines changed

1 file changed

+35
-2
lines changed

browser/ui/views/side_panel/brave_side_panel_resize_widget.cc

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99

1010
#include "brave/browser/ui/views/frame/brave_browser_view.h"
1111
#include "brave/browser/ui/views/side_panel/brave_side_panel.h"
12+
#include "build/build_config.h"
13+
#include "ui/base/metadata/metadata_impl_macros.h"
1214
#include "ui/views/controls/resize_area.h"
1315
#include "ui/views/layout/fill_layout.h"
1416
#include "ui/views/widget/widget.h"
@@ -18,6 +20,32 @@
1820
#include "ui/views/view_constants_aura.h"
1921
#endif
2022

23+
#if BUILDFLAG(IS_MAC)
24+
namespace {
25+
26+
// Subclassed to clear resize cursor when goes out. On macOS, it seems
27+
// widget doesn't clear current cursor(resize) when mouse goes out in some
28+
// specific situation unexpectedly. Because of that, cursor is not changed when
29+
// mouse moves in. Widget doesn't update its cursor if requested one is same
30+
// with previous one. Maybe this problem happens because it's located above
31+
// WebView.
32+
class CustomResizeArea : public views::ResizeArea {
33+
METADATA_HEADER(CustomResizeArea, views::ResizeArea)
34+
public:
35+
using ResizeArea::ResizeArea;
36+
37+
void OnMouseExited(const ui::MouseEvent& event) override {
38+
ResizeArea::OnMouseExited(event);
39+
GetWidget()->SetCursor(ui::Cursor());
40+
}
41+
};
42+
43+
BEGIN_METADATA(CustomResizeArea)
44+
END_METADATA
45+
46+
} // namespace
47+
#endif
48+
2149
SidePanelResizeWidget::SidePanelResizeWidget(
2250
BraveSidePanel* panel,
2351
BraveBrowserView* browser_view,
@@ -38,8 +66,13 @@ SidePanelResizeWidget::SidePanelResizeWidget(
3866
params.activatable = views::Widget::InitParams::Activatable::kNo;
3967
widget_->Init(std::move(params));
4068

41-
auto resize_area = std::make_unique<views::ResizeArea>(resize_area_delegate);
42-
widget_->SetContentsView(std::move(resize_area));
69+
#if BUILDFLAG(IS_MAC)
70+
widget_->SetContentsView(
71+
std::make_unique<CustomResizeArea>(resize_area_delegate));
72+
#else
73+
widget_->SetContentsView(
74+
std::make_unique<views::ResizeArea>(resize_area_delegate));
75+
#endif
4376

4477
#if defined(USE_AURA)
4578
widget_->GetNativeView()->SetProperty(views::kHostViewKey,

0 commit comments

Comments
 (0)