summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/gtkext/easygtk.c27
-rw-r--r--src/gtkext/easygtk.h3
-rw-r--r--src/gui/panels/log.c34
3 files changed, 32 insertions, 32 deletions
diff --git a/src/gtkext/easygtk.c b/src/gtkext/easygtk.c
index b931ff0..5d54771 100644
--- a/src/gtkext/easygtk.c
+++ b/src/gtkext/easygtk.c
@@ -1282,3 +1282,30 @@ void attach_popup_menu_to_widget(GtkMenu *menu, gint *x, gint *y, gboolean *push
*push = TRUE;
}
+
+
+/******************************************************************************
+* *
+* Paramètres : treeview = représentation graphique d'une liste à traiter. *
+* model = gestionnaire des données de la liste. *
+* iter = point à considérer pour l'opération. *
+* *
+* Description : Fait défiler une liste jusqu'à un point donné. *
+* *
+* Retour : - *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+void scroll_to_treeview_iter(GtkTreeView *treeview, GtkTreeModel *model, GtkTreeIter *iter)
+{
+ GtkTreePath *path; /* Chemin d'accès à la ligne */
+
+ path = gtk_tree_model_get_path(model, iter);
+
+ gtk_tree_view_scroll_to_cell(treeview, path, NULL, FALSE, 0.0, 0.0);
+
+ gtk_tree_path_free(path);
+
+}
diff --git a/src/gtkext/easygtk.h b/src/gtkext/easygtk.h
index fb6ad5a..fee45db 100644
--- a/src/gtkext/easygtk.h
+++ b/src/gtkext/easygtk.h
@@ -130,6 +130,9 @@ gint qck_show_question(GtkWindow *, const char *, const char *);
/* Détermine la position d'un menu associé à un composant. */
void attach_popup_menu_to_widget(GtkMenu *, gint *, gint *, gboolean *, GtkWidget *);
+/* Fait défiler une liste jusqu'à un point donné. */
+void scroll_to_treeview_iter(GtkTreeView *, GtkTreeModel *, GtkTreeIter *);
+
#endif /* _EASYGTK_H */
diff --git a/src/gui/panels/log.c b/src/gui/panels/log.c
index 0e9df9a..2fd8f4f 100644
--- a/src/gui/panels/log.c
+++ b/src/gui/panels/log.c
@@ -34,6 +34,7 @@
#include "panel-int.h"
#include "../core/panels.h"
+#include "../../gtkext/easygtk.h"
@@ -57,14 +58,6 @@ typedef struct _log_data
} log_data;
-/* Paramètres à transmettre pour un défilement */
-typedef struct _scroll_data
-{
- GtkTreeView *treeview; /* Affichage de la liste */
- GtkTreePath *path; /* Chemin d'accès à cibler */
-
-} scroll_data;
-
/* Panneau d'accueil (instance) */
struct _GLogPanel
@@ -401,8 +394,6 @@ static gboolean log_message(log_data *data)
GtkTreeStore *store; /* Modèle de gestion */
GtkTreeIter iter; /* Point d'insertion */
GtkTreeView *treeview; /* Affichage de la liste */
- GtkTreePath *path; /* Chemin d'accès à la ligne */
- scroll_data *sdata; /* Paramètres de défilement */
/* Mise en place du message */
@@ -459,30 +450,9 @@ static gboolean log_message(log_data *data)
/* Défilement pour pointer à l'affichage */
- gboolean wait_for_scrolling(scroll_data *_data)
- {
- gtk_tree_view_scroll_to_cell(_data->treeview, _data->path, NULL, FALSE, 0.0, 0.0);
-
- g_object_unref(G_OBJECT(_data->treeview));
- gtk_tree_path_free(_data->path);
-
- free(_data);
-
- return G_SOURCE_REMOVE;
-
- }
-
treeview = GTK_TREE_VIEW(g_object_get_data(G_OBJECT(panel), "treeview"));
- path = gtk_tree_model_get_path(GTK_TREE_MODEL(store), &iter);
-
- sdata = (scroll_data *)calloc(1, sizeof(log_data));
-
- sdata->treeview = treeview;
- sdata->path = path;
-
- g_object_ref(G_OBJECT(sdata->treeview));
- g_idle_add((GSourceFunc)wait_for_scrolling, sdata);
+ scroll_to_treeview_iter(treeview, GTK_TREE_MODEL(store), &iter);
/* Nettoyage de la mémoire */