mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 15:47:44 +00:00
LibGUI: Support inline editing in GUI::IconView
IconView now responds to the editing key (F2) if the view is editable. It does feel a little bit weird to have content_rect() return the text rect for an item, and not the whole item rect. This internal API could probably be better.
This commit is contained in:
parent
7d30cf7122
commit
ece555b684
2 changed files with 17 additions and 0 deletions
|
@ -388,6 +388,14 @@ void IconView::update_item_rects(int item_index, ItemData& item_data) const
|
||||||
item_data.text_rect.set_top(item_rect.y() + item_data.text_offset_y);
|
item_data.text_rect.set_top(item_rect.y() + item_data.text_offset_y);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Gfx::IntRect IconView::content_rect(const ModelIndex& index) const
|
||||||
|
{
|
||||||
|
if (!index.is_valid())
|
||||||
|
return {};
|
||||||
|
auto& item_data = get_item_data(index.row());
|
||||||
|
return item_data.text_rect;
|
||||||
|
}
|
||||||
|
|
||||||
void IconView::get_item_rects(int item_index, ItemData& item_data, const Gfx::Font& font) const
|
void IconView::get_item_rects(int item_index, ItemData& item_data, const Gfx::Font& font) const
|
||||||
{
|
{
|
||||||
auto item_rect = this->item_rect(item_index);
|
auto item_rect = this->item_rect(item_index);
|
||||||
|
@ -602,6 +610,14 @@ void IconView::keydown_event(KeyEvent& event)
|
||||||
if (!m_visual_row_count || !m_visual_column_count)
|
if (!m_visual_row_count || !m_visual_column_count)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if (event.key() == KeyCode::Key_F2) {
|
||||||
|
if (is_editable() && edit_triggers() & EditTrigger::EditKeyPressed) {
|
||||||
|
begin_editing(cursor_index());
|
||||||
|
event.accept();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (event.key() == KeyCode::Key_Return) {
|
if (event.key() == KeyCode::Key_Return) {
|
||||||
activate_selected();
|
activate_selected();
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -49,6 +49,7 @@ public:
|
||||||
void set_model_column(int column) { m_model_column = column; }
|
void set_model_column(int column) { m_model_column = column; }
|
||||||
|
|
||||||
virtual ModelIndex index_at_event_position(const Gfx::IntPoint&) const override;
|
virtual ModelIndex index_at_event_position(const Gfx::IntPoint&) const override;
|
||||||
|
virtual Gfx::IntRect content_rect(const ModelIndex&) const override;
|
||||||
|
|
||||||
virtual void select_all() override;
|
virtual void select_all() override;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue