diff options
Diffstat (limited to 'src/gui/core/items.c')
-rw-r--r-- | src/gui/core/items.c | 67 |
1 files changed, 33 insertions, 34 deletions
diff --git a/src/gui/core/items.c b/src/gui/core/items.c index 923a565..ce60bcb 100644 --- a/src/gui/core/items.c +++ b/src/gui/core/items.c @@ -35,7 +35,7 @@ static GEditorItem *_editem_list = NULL; /* Suit les changements de focus des panneaux d'affichage. */ -static gboolean notify_view_panel_focus_change(GtkDisplayPanel *, GdkEventFocus *, gpointer); +static gboolean notify_view_panel_focus_change(GLoadedPanel *, GdkEventFocus *, gpointer); /* Lance une procédure de déplacement de la position courante. */ static void start_moving_to_address_in_view_panel(GtkDisplayPanel *, const vmpa2t *, gpointer); @@ -109,18 +109,13 @@ void change_editor_items_current_binary(GLoadedBinary *binary) * * ******************************************************************************/ -static gboolean notify_view_panel_focus_change(GtkDisplayPanel *panel, GdkEventFocus *event, gpointer unused) +static gboolean notify_view_panel_focus_change(GLoadedPanel *panel, GdkEventFocus *event, gpointer unused) { GEditorItem *iter; /* Boucle de parcours */ - GEditorItemClass *klass; /* Classe correspondante */ editem_list_for_each(iter, _editem_list) { - klass = G_EDITOR_ITEM_GET_CLASS(iter); - - if (klass->notify_focus != NULL) - klass->notify_focus(iter, event->in ? panel : NULL); - + notify_focus_change_for_editor_item(iter, event->in ? panel : NULL); } return FALSE; @@ -210,9 +205,9 @@ static void track_caret_address_on_view_panel(GtkDisplayPanel *panel, const vmpa * * ******************************************************************************/ -void change_editor_items_current_view(GtkDisplayPanel *panel) +void change_editor_items_current_view(GLoadedPanel *panel) { - GtkDisplayPanel *view; /* Affichage actif */ + GLoadedPanel *view; /* Affichage actif */ GEditorItem *iter; /* Boucle de parcours */ GEditorItemClass *klass; /* Classe correspondante */ GObject *caret; /* Support du curseur actif */ @@ -249,36 +244,40 @@ void change_editor_items_current_view(GtkDisplayPanel *panel) /* Suivi du curseur */ - caret = get_caret_instance(); - - if (caret != NULL) + if (GTK_IS_DISPLAY_PANEL(panel)) { - g_signal_handlers_disconnect_by_func(caret, - G_CALLBACK(start_moving_to_address_in_view_panel), - NULL); - g_signal_handlers_disconnect_by_func(caret, - G_CALLBACK(track_caret_address_on_view_panel), - NULL); + caret = get_caret_instance(); - set_caret_instance(NULL); - g_object_unref(caret); + if (caret != NULL) + { + g_signal_handlers_disconnect_by_func(caret, + G_CALLBACK(start_moving_to_address_in_view_panel), + NULL); + g_signal_handlers_disconnect_by_func(caret, + G_CALLBACK(track_caret_address_on_view_panel), + NULL); - } + set_caret_instance(NULL); + g_object_unref(caret); - if (panel != NULL) - { - g_signal_connect(panel, "move-request", - G_CALLBACK(start_moving_to_address_in_view_panel), - NULL); + } + + if (panel != NULL) + { + g_signal_connect(panel, "move-request", + G_CALLBACK(start_moving_to_address_in_view_panel), + NULL); + + g_signal_connect(panel, "caret-moved", + G_CALLBACK(track_caret_address_on_view_panel), + NULL); - g_signal_connect(panel, "caret-moved", - G_CALLBACK(track_caret_address_on_view_panel), - NULL); + caret = G_OBJECT(panel); - caret = G_OBJECT(panel); + g_object_ref(caret); + set_caret_instance(caret); - g_object_ref(caret); - set_caret_instance(caret); + } } @@ -297,7 +296,7 @@ void change_editor_items_current_view(GtkDisplayPanel *panel) * * ******************************************************************************/ -void change_editor_items_current_view_content(GtkDisplayPanel *panel) +void change_editor_items_current_view_content(GLoadedPanel *panel) { GEditorItem *iter; /* Boucle de parcours */ GEditorItemClass *klass; /* Classe correspondante */ |