summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul LeoNerd Evans <leonerd@leonerd.org.uk>2014-12-29 12:48:53 +0000
committerPaul LeoNerd Evans <leonerd@leonerd.org.uk>2014-12-29 12:48:53 +0000
commit5517d6ccf386c106d3b329b573abb23c14f93af7 (patch)
tree755788b348092a4996c831a8501894f7a47b799b
parent66f084a3d292a073d36ef0896e4413b11d17d42e (diff)
Add vterm_*_get_cbdata() to obtain the callback data pointer from each layer
-rw-r--r--include/vterm.h11
-rw-r--r--src/screen.c5
-rw-r--r--src/state.c5
-rw-r--r--src/vterm.c5
4 files changed, 23 insertions, 3 deletions
diff --git a/include/vterm.h b/include/vterm.h
index d247b65..75fd3c4 100644
--- a/include/vterm.h
+++ b/include/vterm.h
@@ -175,7 +175,8 @@ typedef struct {
int (*resize)(int rows, int cols, void *user);
} VTermParserCallbacks;
-void vterm_parser_set_callbacks(VTerm *vt, const VTermParserCallbacks *callbacks, void *user);
+void vterm_parser_set_callbacks(VTerm *vt, const VTermParserCallbacks *callbacks, void *user);
+void *vterm_parser_get_cbdata(VTerm *vt);
// -----------
// State layer
@@ -198,8 +199,10 @@ typedef struct {
VTermState *vterm_obtain_state(VTerm *vt);
+void vterm_state_set_callbacks(VTermState *state, const VTermStateCallbacks *callbacks, void *user);
+void *vterm_state_get_cbdata(VTermState *state);
+
void vterm_state_reset(VTermState *state, int hard);
-void vterm_state_set_callbacks(VTermState *state, const VTermStateCallbacks *callbacks, void *user);
void vterm_state_get_cursorpos(const VTermState *state, VTermPos *cursorpos);
void vterm_state_get_default_colors(const VTermState *state, VTermColor *default_fg, VTermColor *default_bg);
void vterm_state_get_palette_color(const VTermState *state, int index, VTermColor *col);
@@ -246,8 +249,10 @@ typedef struct {
VTermScreen *vterm_obtain_screen(VTerm *vt);
+void vterm_screen_set_callbacks(VTermScreen *screen, const VTermScreenCallbacks *callbacks, void *user);
+void *vterm_screen_get_cbdata(VTermScreen *screen);
+
void vterm_screen_enable_altscreen(VTermScreen *screen, int altscreen);
-void vterm_screen_set_callbacks(VTermScreen *screen, const VTermScreenCallbacks *callbacks, void *user);
typedef enum {
VTERM_DAMAGE_CELL, /* every cell */
diff --git a/src/screen.c b/src/screen.c
index 6f4b312..ed92ada 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -842,6 +842,11 @@ void vterm_screen_set_callbacks(VTermScreen *screen, const VTermScreenCallbacks
screen->cbdata = user;
}
+void *vterm_screen_get_cbdata(VTermScreen *screen)
+{
+ return screen->cbdata;
+}
+
void vterm_screen_flush_damage(VTermScreen *screen)
{
if(screen->pending_scrollrect.start_row != -1) {
diff --git a/src/state.c b/src/state.c
index 9c22da0..0907fa6 100644
--- a/src/state.c
+++ b/src/state.c
@@ -1706,6 +1706,11 @@ void vterm_state_set_callbacks(VTermState *state, const VTermStateCallbacks *cal
}
}
+void *vterm_state_get_cbdata(VTermState *state)
+{
+ return state->cbdata;
+}
+
int vterm_state_set_termprop(VTermState *state, VTermProp prop, VTermValue *val)
{
/* Only store the new value of the property if usercode said it was happy.
diff --git a/src/vterm.c b/src/vterm.c
index 78eed1e..3ff1cbd 100644
--- a/src/vterm.c
+++ b/src/vterm.c
@@ -201,6 +201,11 @@ void vterm_parser_set_callbacks(VTerm *vt, const VTermParserCallbacks *callbacks
vt->cbdata = user;
}
+void *vterm_parser_get_cbdata(VTerm *vt)
+{
+ return vt->cbdata;
+}
+
VTermValueType vterm_get_attr_type(VTermAttr attr)
{
switch(attr) {