Kaydet (Commit) cce5bdbe authored tarafından Pranav Kant's avatar Pranav Kant

lokdialog: drawing area needs to have focus to capture key events

With this, key events successfully work now.

Change-Id: I6dc6aff91dea08fcbc7ab840a77e2542ab9048ce
üst d6490d3c
...@@ -110,7 +110,7 @@ gtv_lok_dialog_signal_button(GtkWidget* pDialogDrawingArea, GdkEventButton* pEve ...@@ -110,7 +110,7 @@ gtv_lok_dialog_signal_button(GtkWidget* pDialogDrawingArea, GdkEventButton* pEve
(int)pEvent->x, (int)pEvent->y, (int)pEvent->x, (int)pEvent->y,
(int)pixelToTwip(pEvent->x), (int)pixelToTwip(pEvent->x),
(int)pixelToTwip(pEvent->y)); (int)pixelToTwip(pEvent->y));
gtk_widget_grab_focus(GTK_WIDGET(pDialog)); gtk_widget_grab_focus(pDialogDrawingArea);
switch (pEvent->type) switch (pEvent->type)
{ {
...@@ -194,7 +194,6 @@ gtv_lok_dialog_signal_motion(GtkWidget* pDialogDrawingArea, GdkEventButton* pEve ...@@ -194,7 +194,6 @@ gtv_lok_dialog_signal_motion(GtkWidget* pDialogDrawingArea, GdkEventButton* pEve
(int)pEvent->x, (int)pEvent->y, (int)pEvent->x, (int)pEvent->y,
(int)pixelToTwip(pEvent->x), (int)pixelToTwip(pEvent->x),
(int)pixelToTwip(pEvent->y)); (int)pixelToTwip(pEvent->y));
gtk_widget_grab_focus(GTK_WIDGET(pDialog));
pDocument->pClass->postDialogMouseEvent(pDocument, pDocument->pClass->postDialogMouseEvent(pDocument,
priv->dialogid, priv->dialogid,
...@@ -216,6 +215,7 @@ gtv_lok_dialog_signal_key(GtkWidget* pDialogDrawingArea, GdkEventKey* pEvent) ...@@ -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))); 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)); LibreOfficeKitDocument* pDocument = lok_doc_view_get_document(LOK_DOC_VIEW(window->lokdocview));
g_info("lok_dialog_signal_key");
int nCharCode = 0; int nCharCode = 0;
int nKeyCode = 0; int nKeyCode = 0;
priv->m_nKeyModifier &= KEY_MOD2; priv->m_nKeyModifier &= KEY_MOD2;
...@@ -334,12 +334,14 @@ gtv_lok_dialog_init(GtvLokDialog* dialog) ...@@ -334,12 +334,14 @@ gtv_lok_dialog_init(GtvLokDialog* dialog)
priv->m_nKeyModifier = 0; priv->m_nKeyModifier = 0;
priv->m_nLastButtonPressed = 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_PRESS_MASK
|GDK_BUTTON_RELEASE_MASK |GDK_BUTTON_RELEASE_MASK
|GDK_BUTTON_MOTION_MASK |GDK_BUTTON_MOTION_MASK
|GDK_KEY_PRESS_MASK |GDK_KEY_PRESS_MASK
|GDK_KEY_RELEASE_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), "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); g_signal_connect(G_OBJECT(priv->pDialogDrawingArea), "button-press-event", G_CALLBACK(gtv_lok_dialog_signal_button), nullptr);
......
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