mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 05:07:35 +00:00
LibGUI: Add a GModelNotification class that views will receive.
I don't want to use GEvent here since these need to be synchronous and mixing sync and async GEvents would be stupid.
This commit is contained in:
parent
322f49caec
commit
bff5b71467
6 changed files with 41 additions and 2 deletions
|
@ -165,4 +165,3 @@ public:
|
|||
private:
|
||||
int m_timer_id;
|
||||
};
|
||||
|
||||
|
|
|
@ -10,6 +10,27 @@
|
|||
|
||||
class GTableView;
|
||||
|
||||
class GModelNotification {
|
||||
public:
|
||||
enum Type {
|
||||
Invalid = 0,
|
||||
ModelUpdated,
|
||||
};
|
||||
|
||||
explicit GModelNotification(Type type, const GModelIndex& index = GModelIndex())
|
||||
: m_type(type)
|
||||
, m_index(index)
|
||||
{
|
||||
}
|
||||
|
||||
Type type() const { return m_type; }
|
||||
GModelIndex index() const { return m_index; }
|
||||
|
||||
private:
|
||||
Type m_type { Invalid };
|
||||
GModelIndex m_index;
|
||||
};
|
||||
|
||||
class GTableModel {
|
||||
public:
|
||||
struct ColumnMetadata {
|
||||
|
|
|
@ -65,10 +65,15 @@ int GTableView::content_width() const
|
|||
return width;
|
||||
}
|
||||
|
||||
void GTableView::model_notification(const GModelNotification&)
|
||||
{
|
||||
}
|
||||
|
||||
void GTableView::did_update_model()
|
||||
{
|
||||
update_scrollbar_ranges();
|
||||
update();
|
||||
model_notification(GModelNotification(GModelNotification::ModelUpdated));
|
||||
}
|
||||
|
||||
Rect GTableView::row_rect(int item_index) const
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
#pragma once
|
||||
|
||||
#include <LibGUI/GTableModel.h>
|
||||
#include <LibGUI/GWidget.h>
|
||||
#include <AK/Function.h>
|
||||
#include <AK/HashMap.h>
|
||||
|
||||
class GScrollBar;
|
||||
class GTableModel;
|
||||
|
||||
class GTableView : public GWidget {
|
||||
public:
|
||||
|
@ -25,6 +25,8 @@ public:
|
|||
int horizontal_padding() const { return m_horizontal_padding; }
|
||||
|
||||
private:
|
||||
virtual void model_notification(const GModelNotification&);
|
||||
|
||||
virtual void paint_event(GPaintEvent&) override;
|
||||
virtual void resize_event(GResizeEvent&) override;
|
||||
virtual void mousedown_event(GMouseEvent&) override;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue