aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/ffi.c50
-rw-r--r--src/ffi.rs10
-rw-r--r--src/screen.rs45
3 files changed, 105 insertions, 0 deletions
diff --git a/src/ffi.c b/src/ffi.c
index 455d84f..61a4a20 100644
--- a/src/ffi.c
+++ b/src/ffi.c
@@ -41,6 +41,56 @@ int vt100_wrapper_screen_bracketed_paste(struct vt100_screen *screen)
return screen->bracketed_paste;
}
+int vt100_wrapper_screen_visual_bell(struct vt100_screen *screen)
+{
+ return screen->visual_bell;
+}
+
+int vt100_wrapper_screen_audible_bell(struct vt100_screen *screen)
+{
+ return screen->audible_bell;
+}
+
+int vt100_wrapper_screen_update_title(struct vt100_screen *screen)
+{
+ return screen->update_title;
+}
+
+int vt100_wrapper_screen_update_icon_name(struct vt100_screen *screen)
+{
+ return screen->update_icon_name;
+}
+
+int vt100_wrapper_screen_dirty(struct vt100_screen *screen)
+{
+ return screen->dirty;
+}
+
+void vt100_wrapper_screen_clear_visual_bell(struct vt100_screen *screen)
+{
+ screen->visual_bell = 0;
+}
+
+void vt100_wrapper_screen_clear_audible_bell(struct vt100_screen *screen)
+{
+ screen->audible_bell = 0;
+}
+
+void vt100_wrapper_screen_clear_update_title(struct vt100_screen *screen)
+{
+ screen->update_title = 0;
+}
+
+void vt100_wrapper_screen_clear_update_icon_name(struct vt100_screen *screen)
+{
+ screen->update_icon_name = 0;
+}
+
+void vt100_wrapper_screen_clear_dirty(struct vt100_screen *screen)
+{
+ screen->dirty = 0;
+}
+
int vt100_wrapper_cell_is_wide(struct vt100_cell *cell)
{
return cell->is_wide;
diff --git a/src/ffi.rs b/src/ffi.rs
index a939c0d..80a2d08 100644
--- a/src/ffi.rs
+++ b/src/ffi.rs
@@ -46,6 +46,16 @@ extern "C" {
pub fn vt100_wrapper_screen_mouse_reporting_button_motion(screen: *mut types::ScreenImpl) -> libc::c_int;
pub fn vt100_wrapper_screen_mouse_reporting_sgr_mode(screen: *mut types::ScreenImpl) -> libc::c_int;
pub fn vt100_wrapper_screen_bracketed_paste(screen: *mut types::ScreenImpl) -> libc::c_int;
+ pub fn vt100_wrapper_screen_visual_bell(screen: *mut types::ScreenImpl) -> libc::c_int;
+ pub fn vt100_wrapper_screen_audible_bell(screen: *mut types::ScreenImpl) -> libc::c_int;
+ pub fn vt100_wrapper_screen_update_title(screen: *mut types::ScreenImpl) -> libc::c_int;
+ pub fn vt100_wrapper_screen_update_icon_name(screen: *mut types::ScreenImpl) -> libc::c_int;
+ pub fn vt100_wrapper_screen_dirty(screen: *mut types::ScreenImpl) -> libc::c_int;
+ pub fn vt100_wrapper_screen_clear_visual_bell(screen: *mut types::ScreenImpl) -> libc::c_int;
+ pub fn vt100_wrapper_screen_clear_audible_bell(screen: *mut types::ScreenImpl) -> libc::c_int;
+ pub fn vt100_wrapper_screen_clear_update_title(screen: *mut types::ScreenImpl) -> libc::c_int;
+ pub fn vt100_wrapper_screen_clear_update_icon_name(screen: *mut types::ScreenImpl) -> libc::c_int;
+ pub fn vt100_wrapper_screen_clear_dirty(screen: *mut types::ScreenImpl) -> libc::c_int;
pub fn vt100_wrapper_cell_is_wide(cell: *mut types::CellImpl) -> libc::c_int;
pub fn vt100_wrapper_cell_attrs_bold(cell: *mut types::CellAttrs) -> libc::c_int;
pub fn vt100_wrapper_cell_attrs_italic(cell: *mut types::CellAttrs) -> libc::c_int;
diff --git a/src/screen.rs b/src/screen.rs
index 2251506..0a41a2d 100644
--- a/src/screen.rs
+++ b/src/screen.rs
@@ -291,6 +291,51 @@ impl Screen {
ffi::vt100_wrapper_screen_bracketed_paste(screen_impl) != 0
}
}
+
+ pub fn check_visual_bell(&self) -> bool {
+ let Screen(screen_impl) = *self;
+ unsafe {
+ let state = ffi::vt100_wrapper_screen_visual_bell(screen_impl) != 0;
+ ffi::vt100_wrapper_screen_clear_visual_bell(screen_impl);
+ state
+ }
+ }
+
+ pub fn check_audible_bell(&self) -> bool {
+ let Screen(screen_impl) = *self;
+ unsafe {
+ let state = ffi::vt100_wrapper_screen_audible_bell(screen_impl) != 0;
+ ffi::vt100_wrapper_screen_clear_audible_bell(screen_impl);
+ state
+ }
+ }
+
+ pub fn check_update_title(&self) -> bool {
+ let Screen(screen_impl) = *self;
+ unsafe {
+ let state = ffi::vt100_wrapper_screen_update_title(screen_impl) != 0;
+ ffi::vt100_wrapper_screen_clear_update_title(screen_impl);
+ state
+ }
+ }
+
+ pub fn check_update_icon_name(&self) -> bool {
+ let Screen(screen_impl) = *self;
+ unsafe {
+ let state = ffi::vt100_wrapper_screen_update_icon_name(screen_impl) != 0;
+ ffi::vt100_wrapper_screen_clear_update_icon_name(screen_impl);
+ state
+ }
+ }
+
+ pub fn check_dirty(&self) -> bool {
+ let Screen(screen_impl) = *self;
+ unsafe {
+ let state = ffi::vt100_wrapper_screen_dirty(screen_impl) != 0;
+ ffi::vt100_wrapper_screen_clear_dirty(screen_impl);
+ state
+ }
+ }
}
impl Drop for Screen {