Kaydet (Commit) 63d2d50e authored tarafından László Németh's avatar László Németh

gtktiledviewer: add Ctrl, Alt, Shift shortcut support

For example in Writer:

Ctrl-B for bold text
Ctrl-Shift-B/P for subscript/superscript
Ctrl-Alt-C insert comment
Ctrl-1 apply Heading 1 paragraph style

Change-Id: Iaeb8341f2cb273980b637ff2fed89585094e0d9d
üst 51c14b1c
...@@ -337,7 +337,7 @@ signalKey (GtkWidget* pWidget, GdkEventKey* pEvent) ...@@ -337,7 +337,7 @@ signalKey (GtkWidget* pWidget, GdkEventKey* pEvent)
return FALSE; return FALSE;
} }
priv->m_nKeyModifier = 0; priv->m_nKeyModifier &= KEY_MOD2;
switch (pEvent->keyval) switch (pEvent->keyval)
{ {
case GDK_KEY_BackSpace: case GDK_KEY_BackSpace:
...@@ -381,6 +381,8 @@ signalKey (GtkWidget* pWidget, GdkEventKey* pEvent) ...@@ -381,6 +381,8 @@ signalKey (GtkWidget* pWidget, GdkEventKey* pEvent)
case GDK_KEY_Alt_R: case GDK_KEY_Alt_R:
if (pEvent->type == GDK_KEY_PRESS) if (pEvent->type == GDK_KEY_PRESS)
priv->m_nKeyModifier |= KEY_MOD2; priv->m_nKeyModifier |= KEY_MOD2;
else
priv->m_nKeyModifier &= ~KEY_MOD2;
break; break;
default: default:
if (pEvent->keyval >= GDK_KEY_F1 && pEvent->keyval <= GDK_KEY_F26) if (pEvent->keyval >= GDK_KEY_F1 && pEvent->keyval <= GDK_KEY_F26)
...@@ -395,6 +397,25 @@ signalKey (GtkWidget* pWidget, GdkEventKey* pEvent) ...@@ -395,6 +397,25 @@ signalKey (GtkWidget* pWidget, GdkEventKey* pEvent)
if (pEvent->state & GDK_SHIFT_MASK) if (pEvent->state & GDK_SHIFT_MASK)
nKeyCode |= KEY_SHIFT; nKeyCode |= KEY_SHIFT;
if (pEvent->state & GDK_CONTROL_MASK)
nKeyCode |= KEY_MOD1;
if (priv->m_nKeyModifier & KEY_MOD2)
nKeyCode |= KEY_MOD2;
if (nKeyCode & (KEY_SHIFT | KEY_MOD1 | KEY_MOD2)) {
if (pEvent->keyval >= GDK_KEY_a && pEvent->keyval <= GDK_KEY_z)
{
nKeyCode |= 512 + (pEvent->keyval - GDK_KEY_a);
}
else if (pEvent->keyval >= GDK_KEY_A && pEvent->keyval <= GDK_KEY_Z) {
nKeyCode |= 512 + (pEvent->keyval - GDK_KEY_A);
}
else if (pEvent->keyval >= GDK_KEY_0 && pEvent->keyval <= GDK_KEY_9) {
nKeyCode |= 256 + (pEvent->keyval - GDK_KEY_0);
}
}
if (pEvent->type == GDK_KEY_RELEASE) if (pEvent->type == GDK_KEY_RELEASE)
{ {
GTask* task = g_task_new(pDocView, NULL, NULL, NULL); GTask* task = g_task_new(pDocView, NULL, NULL, NULL);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment