File: platform_window_delegate.cc

package info (click to toggle)
chromium 138.0.7204.183-1
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 6,071,908 kB
  • sloc: cpp: 34,937,088; ansic: 7,176,967; javascript: 4,110,704; python: 1,419,953; asm: 946,768; xml: 739,971; pascal: 187,324; sh: 89,623; perl: 88,663; objc: 79,944; sql: 50,304; cs: 41,786; fortran: 24,137; makefile: 21,806; php: 13,980; tcl: 13,166; yacc: 8,925; ruby: 7,485; awk: 3,720; lisp: 3,096; lex: 1,327; ada: 727; jsp: 228; sed: 36
file content (125 lines) | stat: -rw-r--r-- 3,842 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "ui/platform_window/platform_window_delegate.h"

#include <sstream>

#include "base/notreached.h"
#include "third_party/skia/include/core/SkPath.h"
#include "ui/base/owned_window_anchor.h"
#include "ui/gfx/geometry/point_f.h"
#include "ui/gfx/geometry/size.h"

namespace ui {

bool PlatformWindowDelegate::State::WillProduceFrameOnUpdateFrom(
    const State& old) const {
  // None of the following changes will produce a new frame:
  // - bounds origin and fullscreen type: no relayout scheduled.
  // - ui scale: does not imply in a new frame per-se, though inherently implies
  //   in bounds_dip and/or size_px change. See its declaration for further
  //   explanation.
  //
  // Anything else will produce a frame, except for the occlusion state. We do
  // not check that here since there isn't enough information to determine if
  // it will produce a frame, as it depends on whether native occlusion is
  // enabled and if the ui compositor changes visibility.
  //
  // Note: Changing the window state produces a new frame as
  // OnWindowStateChanged will schedule relayout even without the bounds change.
  return old.window_state != window_state ||
         old.bounds_dip.size() != bounds_dip.size() || old.size_px != size_px ||
         old.window_scale != window_scale;
}

std::string PlatformWindowDelegate::State::ToString() const {
  std::stringstream result;
  result << "State {";
  result << "window_state = " << static_cast<int>(window_state);
  result << ", bounds_dip = " << bounds_dip.ToString();
  result << ", size_px = " << size_px.ToString();
  result << ", window_scale = " << window_scale;
  result << ", ui_scale = " << ui_scale;
  result << ", occlusion_state = " << static_cast<int>(occlusion_state);
  result << "}";
  return result.str();
}

PlatformWindowDelegate::PlatformWindowDelegate() = default;

PlatformWindowDelegate::~PlatformWindowDelegate() = default;

gfx::Insets PlatformWindowDelegate::CalculateInsetsInDIP(
    PlatformWindowState window_state) const {
  return gfx::Insets();
}

#if BUILDFLAG(IS_LINUX)
void PlatformWindowDelegate::OnWindowTiledStateChanged(
    WindowTiledEdges new_tiled_edges) {}
#endif

std::optional<gfx::Size> PlatformWindowDelegate::GetMinimumSizeForWindow()
    const {
  return std::nullopt;
}

std::optional<gfx::Size> PlatformWindowDelegate::GetMaximumSizeForWindow()
    const {
  return std::nullopt;
}

bool PlatformWindowDelegate::CanMaximize() const {
  return false;
}

bool PlatformWindowDelegate::CanFullscreen() const {
  return false;
}

SkPath PlatformWindowDelegate::GetWindowMaskForWindowShapeInPixels() {
  return SkPath();
}

void PlatformWindowDelegate::OnOcclusionStateChanged(
    PlatformWindowOcclusionState occlusion_state) {}

int64_t PlatformWindowDelegate::OnStateUpdate(const State& old,
                                              const State& latest) {
  NOTREACHED();
}

std::optional<OwnedWindowAnchor>
PlatformWindowDelegate::GetOwnedWindowAnchorAndRectInDIP() {
  return std::nullopt;
}

bool PlatformWindowDelegate::OnRotateFocus(
    PlatformWindowDelegate::RotateDirection direction,
    bool reset) {
  return false;
}

gfx::Rect PlatformWindowDelegate::ConvertRectToPixels(
    const gfx::Rect& rect_in_dip) const {
  return rect_in_dip;
}

gfx::Rect PlatformWindowDelegate::ConvertRectToDIP(
    const gfx::Rect& rect_in_pixels) const {
  return rect_in_pixels;
}

gfx::PointF PlatformWindowDelegate::ConvertScreenPointToLocalDIP(
    const gfx::Point& screen_in_pixels) const {
  return gfx::PointF(screen_in_pixels);
}

gfx::Insets PlatformWindowDelegate::ConvertInsetsToPixels(
    const gfx::Insets& insets_dip) const {
  return insets_dip;
}

}  // namespace ui