aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Gabriel <mike.gabriel@das-netzwerkteam.de>2025-06-22 21:42:43 +0200
committerMike Gabriel <mike.gabriel@das-netzwerkteam.de>2025-07-22 11:56:19 +0200
commitb5cdd12b186f27cee8cfdfb9ff84c15ca8913582 (patch)
tree2370e7a16ddab2b61aaf848746472faae6b27fe2
parent4de4c6757ad71cad0ee77ffdfde7fb19fb4541a8 (diff)
downloadayatana-indicator-keyboard-b5cdd12b186f27cee8cfdfb9ff84c15ca8913582.tar.gz
ayatana-indicator-keyboard-b5cdd12b186f27cee8cfdfb9ff84c15ca8913582.tar.bz2
ayatana-indicator-keyboard-b5cdd12b186f27cee8cfdfb9ff84c15ca8913582.zip
src/keyboard*: Remember nLayout and nLayoutOSK separately.
-rw-r--r--src/keyboard-lomiri.c26
-rw-r--r--src/keyboard-x11.c3
-rw-r--r--src/keyboard.h2
3 files changed, 23 insertions, 8 deletions
diff --git a/src/keyboard-lomiri.c b/src/keyboard-lomiri.c
index d222a06a..ae2f7961 100644
--- a/src/keyboard-lomiri.c
+++ b/src/keyboard-lomiri.c
@@ -61,6 +61,7 @@ struct _KeyboardPrivate
{
GHashTable *lLayouts;
guint nLayout;
+ guint nLayoutOSK;
GSList *lLayoutRec;
GSList *lLayoutRecOSK;
GSList *lUsers;
@@ -220,26 +221,37 @@ guint keyboard_GetNumLayouts(Keyboard *pKeyboard, gboolean bOSK)
return nLayouts;
}
-guint keyboard_GetLayoutIndex (Keyboard *pKeyboard)
+guint keyboard_GetLayoutIndex (Keyboard *pKeyboard, gboolean bOSK)
{
- return pKeyboard->pPrivate->nLayout;
+ if (bOSK)
+ {
+ return pKeyboard->pPrivate->nLayoutOSK;
+ }
+ else
+ {
+ return pKeyboard->pPrivate->nLayout;
+ }
}
void keyboard_GetLayout(Keyboard *pKeyboard, gboolean bOSK, gint nLayout, gchar **pLanguage, gchar **pDescription, gchar **pId)
{
- if (nLayout == -1)
- {
- nLayout = pKeyboard->pPrivate->nLayout;
- }
GSList *lLayoutRec = NULL;
if (bOSK)
{
+ if (nLayout == -1)
+ {
+ nLayout = pKeyboard->pPrivate->nLayoutOSK;
+ }
lLayoutRec = pKeyboard->pPrivate->lLayoutRecOSK;
}
else
{
+ if (nLayout == -1)
+ {
+ nLayout = pKeyboard->pPrivate->nLayout;
+ }
lLayoutRec = pKeyboard->pPrivate->lLayoutRec;
}
@@ -695,6 +707,8 @@ static void keyboard_init(Keyboard *self)
rxkb_context_unref(pContext);
+ self->pPrivate->nLayoutOSK = 0;
+
// Lomiri-specific layouts
const gchar *LAYOUTS[][3] =
{
diff --git a/src/keyboard-x11.c b/src/keyboard-x11.c
index 89e78517..75dabd6d 100644
--- a/src/keyboard-x11.c
+++ b/src/keyboard-x11.c
@@ -42,6 +42,7 @@ struct _KeyboardPrivate
GHashTable *lLayouts;
Display *pDisplay;
guint nLayout;
+ guint nLayoutOSK;
gint nXkbEventType;
XklConfigRec *pConfigRec;
GSList *lLayoutRec;
@@ -385,7 +386,7 @@ guint keyboard_GetNumLayouts(Keyboard *pKeyboard, gboolean bOSK)
return nLayouts;
}
-guint keyboard_GetLayoutIndex (Keyboard *pKeyboard)
+guint keyboard_GetLayoutIndex (Keyboard *pKeyboard, gboolean bOSK)
{
return pKeyboard->pPrivate->nLayout;
}
diff --git a/src/keyboard.h b/src/keyboard.h
index fd30cf6d..206c4bf3 100644
--- a/src/keyboard.h
+++ b/src/keyboard.h
@@ -47,7 +47,7 @@ GType keyboard_get_type(void);
Keyboard* keyboard_new();
void keyboard_AddSource(Keyboard *pKeyboard);
guint keyboard_GetNumLayouts(Keyboard *pKeyboard, gboolean bOSK);
-guint keyboard_GetLayoutIndex (Keyboard *pKeyboard);
+guint keyboard_GetLayoutIndex (Keyboard *pKeyboard, gboolean bOSK);
void keyboard_GetLayout(Keyboard *pKeyboard, gboolean bOSK, gint nLayout, gchar **pLanguage, gchar **pDescription, gchar **pId);
void keyboard_SetLayout(Keyboard *pKeyboard, gint nLayout, gboolean bOSK);
gboolean keyboard_hasHardwareKeyboard(Keyboard *pKeyboard);