summaryrefslogtreecommitdiff
path: root/libreofficekit
diff options
context:
space:
mode:
authorPranav Kant <pranavk@collabora.co.uk>2017-08-04 00:02:48 +0530
committerJan Holesovsky <kendy@collabora.com>2017-11-15 17:07:12 +0100
commit1b8c684c0d0e8edf3bb740693bd76c1f2f4ad298 (patch)
treeeacdbd19ff8fc205fe439298cde5339da9daf1ac /libreofficekit
parentc3468f4cc553e892fa2da0d49c16c476721f5f05 (diff)
lokdialog: drawing area needs to have focus to capture key events
With this, key events successfully work now. Change-Id: I6dc6aff91dea08fcbc7ab840a77e2542ab9048ce
Diffstat (limited to 'libreofficekit')
-rw-r--r--libreofficekit/qa/gtktiledviewer/gtv-lok-dialog.cxx8
1 files changed, 5 insertions, 3 deletions
diff --git a/libreofficekit/qa/gtktiledviewer/gtv-lok-dialog.cxx b/libreofficekit/qa/gtktiledviewer/gtv-lok-dialog.cxx
index 6b19ddc506c0..e37f9f274062 100644
--- a/libreofficekit/qa/gtktiledviewer/gtv-lok-dialog.cxx
+++ b/libreofficekit/qa/gtktiledviewer/gtv-lok-dialog.cxx
@@ -110,7 +110,7 @@ gtv_lok_dialog_signal_button(GtkWidget* pDialogDrawingArea, GdkEventButton* pEve
(int)pEvent->x, (int)pEvent->y,
(int)pixelToTwip(pEvent->x),
(int)pixelToTwip(pEvent->y));
- gtk_widget_grab_focus(GTK_WIDGET(pDialog));
+ gtk_widget_grab_focus(pDialogDrawingArea);
switch (pEvent->type)
{
@@ -194,7 +194,6 @@ gtv_lok_dialog_signal_motion(GtkWidget* pDialogDrawingArea, GdkEventButton* pEve
(int)pEvent->x, (int)pEvent->y,
(int)pixelToTwip(pEvent->x),
(int)pixelToTwip(pEvent->y));
- gtk_widget_grab_focus(GTK_WIDGET(pDialog));
pDocument->pClass->postDialogMouseEvent(pDocument,
priv->dialogid,
@@ -216,6 +215,7 @@ gtv_lok_dialog_signal_key(GtkWidget* pDialogDrawingArea, GdkEventKey* pEvent)
GtvApplicationWindow* window = GTV_APPLICATION_WINDOW(gtk_window_get_transient_for(GTK_WINDOW(pDialog)));
LibreOfficeKitDocument* pDocument = lok_doc_view_get_document(LOK_DOC_VIEW(window->lokdocview));
+ g_info("lok_dialog_signal_key");
int nCharCode = 0;
int nKeyCode = 0;
priv->m_nKeyModifier &= KEY_MOD2;
@@ -334,12 +334,14 @@ gtv_lok_dialog_init(GtvLokDialog* dialog)
priv->m_nKeyModifier = 0;
priv->m_nLastButtonPressed = 0;
- gtk_widget_add_events(GTK_WIDGET(priv->pDialogDrawingArea),
+ gtk_widget_add_events(priv->pDialogDrawingArea,
GDK_BUTTON_PRESS_MASK
|GDK_BUTTON_RELEASE_MASK
|GDK_BUTTON_MOTION_MASK
|GDK_KEY_PRESS_MASK
|GDK_KEY_RELEASE_MASK);
+ // This is required to be able to capture key events on the drawing area
+ gtk_widget_set_can_focus(priv->pDialogDrawingArea, true);
g_signal_connect(G_OBJECT(priv->pDialogDrawingArea), "draw", G_CALLBACK(gtv_lok_dialog_draw), nullptr);
g_signal_connect(G_OBJECT(priv->pDialogDrawingArea), "button-press-event", G_CALLBACK(gtv_lok_dialog_signal_button), nullptr);