summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/ibuslookuptable.c45
-rw-r--r--src/ibuslookuptable.h11
2 files changed, 56 insertions, 0 deletions
diff --git a/src/ibuslookuptable.c b/src/ibuslookuptable.c
index 53ea6d7..37342c5 100644
--- a/src/ibuslookuptable.c
+++ b/src/ibuslookuptable.c
@@ -223,6 +223,8 @@ ibus_lookup_table_new (guint page_size,
gboolean cursor_visible,
gboolean round)
{
+ g_assert (page_size > 0);
+
IBusLookupTable *table;
table= g_object_new (IBUS_TYPE_LOOKUP_TABLE, NULL);
@@ -278,19 +280,62 @@ ibus_lookup_table_set_cursor_pos (IBusLookupTable *table,
guint cursor_pos)
{
g_assert (IBUS_IS_LOOKUP_TABLE (table));
+ g_assert (cursor_pos < table->candidates->len);
table->cursor_pos = cursor_pos;
}
+guint
+ibus_lookup_table_get_cursor_pos (IBusLookupTable *table)
+{
+ g_assert (IBUS_IS_LOOKUP_TABLE (table));
+
+ return table->cursor_pos;
+}
+
+guint
+ibus_lookup_table_get_cursor_in_page (IBusLookupTable *table)
+{
+ g_assert (IBUS_IS_LOOKUP_TABLE (table));
+
+ return table->cursor_pos % table->page_size;
+}
+
+void
+ibus_lookup_table_set_cursor_visible (IBusLookupTable *table,
+ gboolean visible)
+{
+ g_assert (IBUS_IS_LOOKUP_TABLE (table));
+
+ table->cursor_visible = visible;
+}
+
+gboolean
+ibus_lookup_table_is_cursor_visible (IBusLookupTable *table)
+{
+ g_assert (IBUS_IS_LOOKUP_TABLE (table));
+
+ return table->cursor_visible;
+}
+
void
ibus_lookup_table_set_page_size (IBusLookupTable *table,
guint page_size)
{
g_assert (IBUS_IS_LOOKUP_TABLE (table));
+ g_assert (page_size > 0);
table->page_size = page_size;
}
+guint
+ibus_lookup_table_get_page_size (IBusLookupTable *table)
+{
+ g_assert (IBUS_IS_LOOKUP_TABLE (table));
+
+ return table->page_size;
+}
+
gboolean
ibus_lookup_table_page_up (IBusLookupTable *table)
{
diff --git a/src/ibuslookuptable.h b/src/ibuslookuptable.h
index 87e9b0f..ede02b1 100644
--- a/src/ibuslookuptable.h
+++ b/src/ibuslookuptable.h
@@ -76,9 +76,20 @@ IBusText *ibus_lookup_table_get_candidate
void ibus_lookup_table_set_cursor_pos
(IBusLookupTable *table,
guint cursor_pos);
+guint ibus_lookup_table_get_cursor_pos
+ (IBusLookupTable *table);
+void ibus_lookup_table_set_cursor_visible
+ (IBusLookupTable *table,
+ gboolean visible);
+gboolean ibus_lookup_table_is_cursor_visible
+ (IBusLookupTable *table);
+guint ibus_lookup_table_get_cursor_in_page
+ (IBusLookupTable *table);
void ibus_lookup_table_set_page_size
(IBusLookupTable *table,
guint page_size);
+guint ibus_lookup_table_get_page_size
+ (IBusLookupTable *table);
void ibus_lookup_table_clear (IBusLookupTable *table);
gboolean ibus_lookup_table_page_up (IBusLookupTable *table);
gboolean ibus_lookup_table_page_down(IBusLookupTable *table);