fix: standardize scrollbars, fix scrollbar in TextEditor
This commit is contained in:
@@ -775,10 +775,10 @@ inline void draw_separator(Canvas& c, int x, int y, int w, const Theme& theme) {
|
||||
}
|
||||
|
||||
static constexpr int SCROLLBAR_W = 12;
|
||||
static constexpr int SCROLLBAR_OUTER_PAD = 4;
|
||||
static constexpr int SCROLLBAR_TRACK_PAD = 8;
|
||||
static constexpr int SCROLLBAR_THUMB_INSET = 2;
|
||||
static constexpr int SCROLLBAR_MIN_THUMB = 24;
|
||||
static constexpr int SCROLLBAR_OUTER_PAD = 0;
|
||||
static constexpr int SCROLLBAR_TRACK_PAD = 0;
|
||||
static constexpr int SCROLLBAR_THUMB_INSET = 1;
|
||||
static constexpr int SCROLLBAR_MIN_THUMB = 20;
|
||||
|
||||
inline bool scrollbar_needed(int content_extent, int view_extent) {
|
||||
return content_extent > view_extent && view_extent > 0;
|
||||
@@ -851,13 +851,11 @@ inline int scrollbar_offset_from_thumb_top(const Rect& track,
|
||||
return (int)(((int64_t)rel * max_offset + travel / 2) / travel);
|
||||
}
|
||||
|
||||
inline Color scrollbar_thumb_color(const Theme& theme,
|
||||
inline Color scrollbar_thumb_color(const Theme& /*theme*/,
|
||||
bool hovered,
|
||||
bool dragging) {
|
||||
Color base = mix(theme.border, theme.text_muted, 54);
|
||||
if (dragging) return mix(base, theme.accent, 118);
|
||||
if (hovered) return mix(base, theme.accent, 42);
|
||||
return base;
|
||||
if (hovered || dragging) return Color::from_rgb(0xA0, 0xA0, 0xA0);
|
||||
return colors::SCROLLBAR_FG;
|
||||
}
|
||||
|
||||
inline void draw_scrollbar(Canvas& c,
|
||||
@@ -868,26 +866,9 @@ inline void draw_scrollbar(Canvas& c,
|
||||
const Theme& theme) {
|
||||
if (track.empty() || thumb.empty()) return;
|
||||
|
||||
if (hovered || dragging) {
|
||||
int rail_w = track.w > 6 ? track.w - 6 : track.w;
|
||||
if (rail_w < 1) rail_w = 1;
|
||||
Rect rail = {
|
||||
track.x + (track.w - rail_w) / 2,
|
||||
track.y,
|
||||
rail_w,
|
||||
track.h
|
||||
};
|
||||
Color rail_fill = dragging
|
||||
? mix(theme.window_bg, theme.accent, 34)
|
||||
: mix(theme.window_bg, theme.text_muted, 24);
|
||||
c.fill_rounded_rect(rail.x, rail.y, rail.w, rail.h,
|
||||
gui_max(theme.radius_sm, rail.w / 2),
|
||||
rail_fill);
|
||||
}
|
||||
|
||||
c.fill_rect(track.x, track.y, track.w, track.h, colors::SCROLLBAR_BG);
|
||||
Color thumb_fill = scrollbar_thumb_color(theme, hovered, dragging);
|
||||
int radius = gui_max(theme.radius_sm, thumb.w / 2);
|
||||
c.fill_rounded_rect(thumb.x, thumb.y, thumb.w, thumb.h, radius, thumb_fill);
|
||||
c.fill_rect(thumb.x, thumb.y, thumb.w, thumb.h, thumb_fill);
|
||||
}
|
||||
|
||||
inline Rect tab_rect(const Rect& bar, int count, int index) {
|
||||
|
||||
Reference in New Issue
Block a user