mirror of
https://github.com/varun-r-mallya/sysprof.git
synced 2026-02-12 16:10:54 +00:00
libsysprof-gtk: fix items-change emission for model changes
This commit is contained in:
@ -225,9 +225,6 @@ void
|
|||||||
sysprof_series_set_model (SysprofSeries *self,
|
sysprof_series_set_model (SysprofSeries *self,
|
||||||
GListModel *model)
|
GListModel *model)
|
||||||
{
|
{
|
||||||
guint old_len = 0;
|
|
||||||
guint new_len = 0;
|
|
||||||
|
|
||||||
g_return_if_fail (SYSPROF_IS_SERIES (self));
|
g_return_if_fail (SYSPROF_IS_SERIES (self));
|
||||||
g_return_if_fail (!model || G_IS_LIST_MODEL (model));
|
g_return_if_fail (!model || G_IS_LIST_MODEL (model));
|
||||||
|
|
||||||
@ -235,29 +232,41 @@ sysprof_series_set_model (SysprofSeries *self,
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
if (model != NULL)
|
if (model != NULL)
|
||||||
{
|
g_object_ref (model);
|
||||||
new_len = g_list_model_get_n_items (model);
|
|
||||||
g_object_ref (model);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (self->model != NULL)
|
if (self->model != NULL)
|
||||||
{
|
{
|
||||||
old_len = g_list_model_get_n_items (self->model);
|
guint old_len = g_list_model_get_n_items (self->model);
|
||||||
|
|
||||||
g_clear_signal_handler (&self->items_changed_handler, self->model);
|
g_clear_signal_handler (&self->items_changed_handler, self->model);
|
||||||
SYSPROF_SERIES_GET_CLASS (self)->items_changed (self, self->model, 0, old_len, 0);
|
|
||||||
|
if (old_len > 0)
|
||||||
|
{
|
||||||
|
SYSPROF_SERIES_GET_CLASS (self)->items_changed (self, self->model, 0, old_len, 0);
|
||||||
|
g_list_model_items_changed (G_LIST_MODEL (self), 0, old_len, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
g_clear_object (&self->model);
|
||||||
}
|
}
|
||||||
|
|
||||||
g_set_object (&self->model, model);
|
self->model = model;
|
||||||
|
|
||||||
if (model != NULL)
|
if (model != NULL)
|
||||||
{
|
{
|
||||||
|
guint new_len = g_list_model_get_n_items (model);
|
||||||
|
|
||||||
self->items_changed_handler =
|
self->items_changed_handler =
|
||||||
g_signal_connect_object (model,
|
g_signal_connect_object (model,
|
||||||
"items-changed",
|
"items-changed",
|
||||||
G_CALLBACK (sysprof_series_items_changed_cb),
|
G_CALLBACK (sysprof_series_items_changed_cb),
|
||||||
self,
|
self,
|
||||||
G_CONNECT_SWAPPED);
|
G_CONNECT_SWAPPED);
|
||||||
SYSPROF_SERIES_GET_CLASS (self)->items_changed (self, self->model, 0, 0, new_len);
|
|
||||||
|
if (new_len > 0)
|
||||||
|
{
|
||||||
|
SYSPROF_SERIES_GET_CLASS (self)->items_changed (self, self->model, 0, 0, new_len);
|
||||||
|
g_list_model_items_changed (G_LIST_MODEL (self), 0, 0, new_len);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_MODEL]);
|
g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_MODEL]);
|
||||||
|
|||||||
Reference in New Issue
Block a user