LibWeb: Only paint focus outline when browser window has focus

This is communicated through the PaintContext::has_focus() flag.
This commit is contained in:
Andreas Kling 2020-08-14 20:02:46 +02:00
parent c1e0047b48
commit 2614ef550c
Notes: sideshowbarker 2024-07-19 03:38:04 +09:00
3 changed files with 8 additions and 2 deletions

View file

@ -105,7 +105,8 @@ void LayoutDocument::paint_all_phases(PaintContext& context)
paint(context, PaintPhase::Background);
paint(context, PaintPhase::Border);
paint(context, PaintPhase::Foreground);
paint(context, PaintPhase::FocusOutline);
if (context.has_focus())
paint(context, PaintPhase::FocusOutline);
paint(context, PaintPhase::Overlay);
}

View file

@ -273,6 +273,7 @@ void PageView::paint_event(GUI::PaintEvent& event)
PaintContext context(painter, palette(), { horizontal_scrollbar().value(), vertical_scrollbar().value() });
context.set_should_show_line_box_borders(m_should_show_line_box_borders);
context.set_viewport_rect(viewport_rect_in_content_coordinates());
context.set_has_focus(is_focused());
layout_root()->paint_all_phases(context);
}

View file

@ -26,9 +26,9 @@
#pragma once
#include <LibGfx/Forward.h>
#include <LibGfx/Palette.h>
#include <LibGfx/Rect.h>
#include <LibGfx/Forward.h>
namespace Web {
@ -52,12 +52,16 @@ public:
const Gfx::IntPoint& scroll_offset() const { return m_scroll_offset; }
bool has_focus() const { return m_focus; }
void set_has_focus(bool focus) { m_focus = focus; }
private:
Gfx::Painter& m_painter;
Palette m_palette;
Gfx::IntRect m_viewport_rect;
Gfx::IntPoint m_scroll_offset;
bool m_should_show_line_box_borders { false };
bool m_focus { false };
};
}