summaryrefslogtreecommitdiff
path: root/src/gui/panels/glance.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/panels/glance.c')
-rw-r--r--src/gui/panels/glance.c50
1 files changed, 28 insertions, 22 deletions
diff --git a/src/gui/panels/glance.c b/src/gui/panels/glance.c
index c58f3b6..0fb8f43 100644
--- a/src/gui/panels/glance.c
+++ b/src/gui/panels/glance.c
@@ -87,7 +87,7 @@ static void g_glance_panel_dispose(GGlancePanel *);
static void g_glance_panel_finalize(GGlancePanel *);
/* Lance une actualisation du fait d'un changement de support. */
-static void update_glance_panel_for_view(GGlancePanel *, GLoadedPanel *);
+static void change_glance_panel_current_view(GGlancePanel *, GLoadedPanel *, GLoadedPanel *);
/* Réagit à la préparation du défilement du support original. */
static void on_view_scroll_setup(GtkAdjustment *, GGlancePanel *);
@@ -102,7 +102,7 @@ static void on_glance_resize(GtkWidget *, GdkRectangle *, GGlancePanel *);
static void compute_glance_scale(GGlancePanel *);
/* Lance une actualisation du fait d'un changement de vue. */
-static void update_glance_panel_for_view_content(GGlancePanel *, GLoadedPanel *);
+static void update_glance_panel_view(GGlancePanel *, GLoadedPanel *);
/* Met à jour l'affichage de l'aperçu rapide à présenter. */
static gboolean redraw_glance_area(GtkWidget *, cairo_t *, GGlancePanel *);
@@ -147,8 +147,8 @@ static void g_glance_panel_class_init(GGlancePanelClass *klass)
editem = G_EDITOR_ITEM_CLASS(klass);
- editem->update_view = (update_item_view_fc)update_glance_panel_for_view;
- editem->update_content = (update_item_view_fc)update_glance_panel_for_view_content;
+ editem->change_view = (change_item_view_fc)change_glance_panel_current_view;
+ editem->update_view = (update_item_view_fc)update_glance_panel_view;
theme = gtk_icon_theme_get_default();
@@ -282,7 +282,8 @@ GPanelItem *g_glance_panel_new(void)
/******************************************************************************
* *
* Paramètres : panel = panneau à actualiser. *
-* view = nouveau panneau d'affichage actif. *
+* old = ancienne vue du contenu chargé analysé. *
+* new = nouvelle vue du contenu chargé analysé. *
* *
* Description : Lance une actualisation du fait d'un changement de support. *
* *
@@ -292,17 +293,17 @@ GPanelItem *g_glance_panel_new(void)
* *
******************************************************************************/
-static void update_glance_panel_for_view(GGlancePanel *panel, GLoadedPanel *view)
+static void change_glance_panel_current_view(GGlancePanel *panel, GLoadedPanel *old, GLoadedPanel *new)
{
GtkWidget *parent; /* Support défilant de la vue */
GtkAdjustment *adj; /* Gestionnaire du défilement */
if (panel->view != NULL)
{
- g_object_unref(panel->view);
+ g_object_unref(G_OBJECT(panel->view));
panel->view = NULL;
- g_object_unref(panel->support);
+ g_object_unref(G_OBJECT(panel->support));
panel->support = NULL;
if (panel->cache != NULL)
@@ -318,22 +319,27 @@ static void update_glance_panel_for_view(GGlancePanel *panel, GLoadedPanel *view
* de la fonction mcb_view_change_support().
*/
- parent = gtk_widget_get_parent(GTK_WIDGET(view));
+ parent = gtk_widget_get_parent(GTK_WIDGET(new));
if (!GTK_IS_SCROLLED_WINDOW(parent)) return;
- panel->view = view;
- g_object_ref(panel->view);
+ panel->view = new;
+
+ if (panel->view != NULL)
+ {
+ g_object_ref(G_OBJECT(panel->view));
+
+ panel->support = GTK_SCROLLED_WINDOW(parent);
+ g_object_ref(G_OBJECT(panel->support));
- panel->support = GTK_SCROLLED_WINDOW(parent);
- g_object_ref(panel->support);
+ adj = gtk_scrolled_window_get_hadjustment(panel->support);
+ g_signal_connect(G_OBJECT(adj), "changed", G_CALLBACK(on_view_scroll_setup), panel);
+ g_signal_connect(G_OBJECT(adj), "value-changed", G_CALLBACK(on_view_scrolled), panel);
- adj = gtk_scrolled_window_get_hadjustment(panel->support);
- g_signal_connect(G_OBJECT(adj), "changed", G_CALLBACK(on_view_scroll_setup), panel);
- g_signal_connect(G_OBJECT(adj), "value-changed", G_CALLBACK(on_view_scrolled), panel);
+ adj = gtk_scrolled_window_get_vadjustment(panel->support);
+ g_signal_connect(G_OBJECT(adj), "changed", G_CALLBACK(on_view_scroll_setup), panel);
+ g_signal_connect(G_OBJECT(adj), "value-changed", G_CALLBACK(on_view_scrolled), panel);
- adj = gtk_scrolled_window_get_vadjustment(panel->support);
- g_signal_connect(G_OBJECT(adj), "changed", G_CALLBACK(on_view_scroll_setup), panel);
- g_signal_connect(G_OBJECT(adj), "value-changed", G_CALLBACK(on_view_scrolled), panel);
+ }
}
@@ -368,7 +374,7 @@ static void on_view_scroll_setup(GtkAdjustment *adj, GGlancePanel *panel)
on_view_scrolled(adj, panel);
- update_glance_panel_for_view_content(panel, panel->view);
+ update_glance_panel_view(panel, panel->view);
}
@@ -426,7 +432,7 @@ static void on_glance_resize(GtkWidget *widget, GdkRectangle *allocation, GGlanc
if (panel->view != NULL)
{
on_view_scroll_setup(NULL, panel);
- update_glance_panel_for_view_content(panel, panel->view);
+ update_glance_panel_view(panel, panel->view);
}
}
@@ -519,7 +525,7 @@ static void compute_glance_scale(GGlancePanel *panel)
* *
******************************************************************************/
-static void update_glance_panel_for_view_content(GGlancePanel *panel, GLoadedPanel *view)
+static void update_glance_panel_view(GGlancePanel *panel, GLoadedPanel *view)
{
cairo_t *cairo; /* Assistant pour le dessin */
GtkAllocation area; /* Dimension de la surface */