summaryrefslogtreecommitdiff
path: root/libcons
diff options
context:
space:
mode:
authorMarcus Brinkmann <marcus@gnu.org>2002-09-10 18:05:41 +0000
committerMarcus Brinkmann <marcus@gnu.org>2002-09-10 18:05:41 +0000
commitbe549330de1979ba914194bd79bfd7eb998a792e (patch)
tree0e507d51c57f7a94934c3cf2ad3eaf72461ae510 /libcons
parent26482336f2919d72935a8aacc42420aa89138cbd (diff)
console/
2002-09-10 Marcus Brinkmann <marcus@gnu.org> * display.c (DISPLAY_CHANGE_FLAGS): New macro. (struct changes): New member FLAGS. (display_flush_filechange): Handle change of flags. (display_output_some): Initialize DISPLAY->changes.flags. (display_start_output): Clear CONS_FLAGS_SCROLL_LOCK in DISPLAY. (display_stop_output): Set CONS_FLAGS_SCROLL_LOCK in DISPLAY. hurd/ 2002-09-10 Marcus Brinkmann <marcus@gnu.org> * console.h (struct cons_display): New member FLAGS. (union cons_change_t): Likewise for WHAT->flags. libcons/ 2002-09-10 Marcus Brinkmann <marcus@gnu.org> * cons.h: New prototype for cons_vcons_set_scroll_lock. (struct vcons): Add member FLAGS to state. * file-changed.c (cons_S_file_changed): Handle change of flags. * vcons-refresh.c (cons_vcons_refresh): Copy FLAGS field. Call cons_vcons_set_scroll_lock. * cons-switch.c (cons_switch): Initialize VCONS_ENTRY even if DELTA is negative. utils/ 2002-09-09 Marcus Brinkmann <marcus@gnu.org> * console-ncurses.c (cons_vcons_set_scroll_lock): New function.
Diffstat (limited to 'libcons')
-rw-r--r--libcons/ChangeLog11
-rw-r--r--libcons/cons-switch.c1
-rw-r--r--libcons/cons.h5
-rw-r--r--libcons/file-changed.c10
-rw-r--r--libcons/vcons-refresh.c2
5 files changed, 29 insertions, 0 deletions
diff --git a/libcons/ChangeLog b/libcons/ChangeLog
index bae85db0..e6323d2f 100644
--- a/libcons/ChangeLog
+++ b/libcons/ChangeLog
@@ -1,3 +1,14 @@
+2002-09-10 Marcus Brinkmann <marcus@gnu.org>
+
+ * cons.h: New prototype for cons_vcons_set_scroll_lock.
+ (struct vcons): Add member FLAGS to state.
+ * file-changed.c (cons_S_file_changed): Handle change of flags.
+ * vcons-refresh.c (cons_vcons_refresh): Copy FLAGS field.
+ Call cons_vcons_set_scroll_lock.
+
+ * cons-switch.c (cons_switch): Initialize VCONS_ENTRY even if
+ DELTA is negative.
+
2002-09-09 Marcus Brinkmann <marcus@gnu.org>
* Makefile (SRCS): Add vcons-scrollback.c.
diff --git a/libcons/cons-switch.c b/libcons/cons-switch.c
index c39e83da..752af97e 100644
--- a/libcons/cons-switch.c
+++ b/libcons/cons-switch.c
@@ -56,6 +56,7 @@ cons_switch (vcons_t vcons, int id, int delta, vcons_t *r_vcons)
else
{
assert (delta < 0);
+ vcons_entry = vcons->vcons_entry;
while (delta++ < 0)
{
vcons_entry = vcons_entry->prev;
diff --git a/libcons/cons.h b/libcons/cons.h
index 6b2fca49..783aeb6a 100644
--- a/libcons/cons.h
+++ b/libcons/cons.h
@@ -76,6 +76,7 @@ struct vcons
struct
{
+ uint32_t flags;
struct
{
uint32_t col;
@@ -195,6 +196,10 @@ void cons_vcons_beep (vcons_t vcons);
VCONS, which is locked, flash visibly. */
void cons_vcons_flash (vcons_t vcons);
+/* The user must define this function. Notice the current status of
+ the scroll lock flag. */
+void cons_vcons_set_scroll_lock (vcons_t vcons, int onoff);
+
/* The user must define this function. It is called whenever a
virtual console is selected to be the active one. It is the user's
responsibility to close the console at some later time. */
diff --git a/libcons/file-changed.c b/libcons/file-changed.c
index b4372ed9..fabc7f6e 100644
--- a/libcons/file-changed.c
+++ b/libcons/file-changed.c
@@ -202,6 +202,16 @@ cons_S_file_changed (cons_notify_t notify, natural_t tickno,
vcons->state.bell.visible++;
}
}
+ if (change.what.flags)
+ {
+ uint32_t flags = vcons->display->flags;
+
+ if (flags & CONS_FLAGS_SCROLL_LOCK
+ != vcons->display->flags & CONS_FLAGS_SCROLL_LOCK)
+ cons_vcons_set_scroll_lock (vcons, flags
+ & CONS_FLAGS_SCROLL_LOCK);
+ vcons->state.flags = flags;
+ }
}
else
{
diff --git a/libcons/vcons-refresh.c b/libcons/vcons-refresh.c
index 35e74224..c2db2c57 100644
--- a/libcons/vcons-refresh.c
+++ b/libcons/vcons-refresh.c
@@ -34,6 +34,7 @@ cons_vcons_refresh (vcons_t vcons)
vcons->state.cursor.status = vcons->display->cursor.status;
vcons->state.bell.audible = vcons->display->bell.audible;
vcons->state.bell.visible = vcons->display->bell.visible;
+ vcons->state.flags = vcons->display->flags;
vcons->state.changes.written = vcons->display->changes.written;
cons_vcons_write (vcons, vcons->state.screen.matrix
@@ -60,5 +61,6 @@ cons_vcons_refresh (vcons_t vcons)
cons_vcons_set_cursor_pos (vcons, vcons->state.cursor.col,
vcons->state.cursor.row);
cons_vcons_set_cursor_status (vcons, vcons->state.cursor.status);
+ cons_vcons_set_scroll_lock (vcons, vcons->state.flags & CONS_FLAGS_SCROLL_LOCK);
cons_vcons_update (vcons);
}