diff options
Diffstat (limited to 'src/gtkext')
-rw-r--r-- | src/gtkext/gtkviewpanel-int.h | 2 | ||||
-rw-r--r-- | src/gtkext/gtkviewpanel.c | 58 | ||||
-rw-r--r-- | src/gtkext/gtkviewpanel.h | 11 |
3 files changed, 71 insertions, 0 deletions
diff --git a/src/gtkext/gtkviewpanel-int.h b/src/gtkext/gtkviewpanel-int.h index 9a2f885..fcd6ffb 100644 --- a/src/gtkext/gtkviewpanel-int.h +++ b/src/gtkext/gtkviewpanel-int.h @@ -103,6 +103,8 @@ struct _GtkViewPanelClass /* Signaux */ + void (* move_request) (GtkViewPanel *, const vmpa2t *); + void (* caret_moved) (GtkViewPanel *, const vmpa2t *); }; diff --git a/src/gtkext/gtkviewpanel.c b/src/gtkext/gtkviewpanel.c index b7829c2..7dab444 100644 --- a/src/gtkext/gtkviewpanel.c +++ b/src/gtkext/gtkviewpanel.c @@ -126,6 +126,14 @@ static void gtk_view_panel_class_init(GtkViewPanelClass *class) panel_class->compute_inc = gtk_view_panel_compute_scroll_inc; + g_signal_new("move-request", + GTK_TYPE_VIEW_PANEL, + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET(GtkViewPanelClass, move_request), + NULL, NULL, + g_cclosure_marshal_VOID__POINTER, + G_TYPE_NONE, 1, G_TYPE_POINTER); + g_signal_new("caret-moved", GTK_TYPE_VIEW_PANEL, G_SIGNAL_RUN_LAST, @@ -802,6 +810,36 @@ GLoadedBinary *gtk_view_panel_get_binary(const GtkViewPanel *panel) } + + + + + + + + + +/****************************************************************************** +* * +* Paramètres : panel = composant GTK à consulter. * +* * +* Description : Indique la position courante du curseur. * +* * +* Retour : Emplacement courant du curseur. * +* * +* Remarques : - * +* * +******************************************************************************/ +#include "gtkbufferview.h" // FIXME +const vmpa2t *gtk_view_panel_get_caret_location(const GtkViewPanel *panel) +{ + /* FIXME */ + + return gtk_buffer_view_get_caret_location(GTK_BUFFER_VIEW(panel)); + +} + + /****************************************************************************** * * * Paramètres : panel = composant GTK à manipuler. * @@ -894,6 +932,26 @@ void _gtk_view_panel_scroll_to_address(GtkViewPanel *panel, const vmpa2t *addr, /****************************************************************************** * * +* Paramètres : panel = composant GTK à manipuler. * +* addr = adresse à présenter à l'écran. * +* * +* Description : Demande à qui veut répondre un déplacement du curseur. * +* * +* Retour : - * +* * +* Remarques : - * +* * +******************************************************************************/ + +void gtk_view_panel_request_move(GtkViewPanel *panel, const vmpa2t *addr) +{ + g_signal_emit_by_name(panel, "move-request", addr); + +} + + +/****************************************************************************** +* * * Paramètres : panel = composant GTK à consulter. * * line = ligne de tampon où se trouve le curseur. [OUT] * * segment = eventuel segment de ligne actif. [OUT] * diff --git a/src/gtkext/gtkviewpanel.h b/src/gtkext/gtkviewpanel.h index 24f0640..0943dd1 100644 --- a/src/gtkext/gtkviewpanel.h +++ b/src/gtkext/gtkviewpanel.h @@ -68,6 +68,9 @@ void gtk_view_panel_set_code_display(GtkViewPanel *, bool); /* Fournit le binaire associé à la représentation. */ GLoadedBinary *gtk_view_panel_get_binary(const GtkViewPanel *); + + + /* Adaptation d'une position sur une surface */ typedef enum _ScrollPositionTweak { @@ -78,11 +81,19 @@ typedef enum _ScrollPositionTweak } ScrollPositionTweak; +/* Indique la position courante du curseur. */ +const vmpa2t *gtk_view_panel_get_caret_location(const GtkViewPanel *); + /* S'assure qu'une adresse donnée est visible à l'écran. */ void _gtk_view_panel_scroll_to_address(GtkViewPanel *, const vmpa2t *, ScrollPositionTweak, bool); #define gtk_view_panel_scroll_to_address(p, a, t) _gtk_view_panel_scroll_to_address(p, a, t, true) + + +/* Demande à qui veut répondre un déplacement du curseur. */ +void gtk_view_panel_request_move(GtkViewPanel *, const vmpa2t *); + /* Fournit des éléments liés à la position courante dans la vue. */ bool gtk_view_panel_get_position(const GtkViewPanel *, GBufferLine **, GBufferSegment **); |