[Libreoffice-commits] core.git: Branch 'feature/lok_dialog' - 2 commits - libreofficekit/qa

Pranav Kant pranavk at collabora.co.uk
Thu Aug 3 18:34:44 UTC 2017


 libreofficekit/qa/gtktiledviewer/gtv-lok-dialog.cxx                 |    8 ++++---
 libreofficekit/qa/gtktiledviewer/gtv-lokdocview-signal-handlers.cxx |   11 +++++-----
 2 files changed, 11 insertions(+), 8 deletions(-)

New commits:
commit 9c83e29f1f33692b51031332cc0ee35ebbe243dc
Author: Pranav Kant <pranavk at collabora.co.uk>
Date:   Fri Aug 4 00:02:48 2017 +0530

    lokdialog: drawing area needs to have focus to capture key events
    
    With this, key events successfully work now.
    
    Change-Id: I6dc6aff91dea08fcbc7ab840a77e2542ab9048ce

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);
commit 932993df9e866d586328a6d8d26ae23edc8600f3
Author: Pranav Kant <pranavk at collabora.co.uk>
Date:   Fri Aug 4 00:02:38 2017 +0530

    lokdialog: Invalid free
    
    Change-Id: I7713b8d025652770e7e46603edbaa86951588871

diff --git a/libreofficekit/qa/gtktiledviewer/gtv-lokdocview-signal-handlers.cxx b/libreofficekit/qa/gtktiledviewer/gtv-lokdocview-signal-handlers.cxx
index 72916b56f9ce..1dc1d3a38e23 100644
--- a/libreofficekit/qa/gtktiledviewer/gtv-lokdocview-signal-handlers.cxx
+++ b/libreofficekit/qa/gtktiledviewer/gtv-lokdocview-signal-handlers.cxx
@@ -311,14 +311,15 @@ void LOKDocViewSigHandlers::dialogChild(LOKDocView* pDocView, gchar* pPayload, g
   std::string aAction = aRoot.get<std::string>("action");
   std::string aPos = aRoot.get<std::string>("position");
   gchar** ppCoordinates = g_strsplit(aPos.c_str(), ", ", 2);
+  gchar** ppCoordinate = ppCoordinates;
   int nX = 0;
   int nY = 0;
 
-  if (*ppCoordinates)
-      nX = atoi(*ppCoordinates);
-  ++ppCoordinates;
-  if (*ppCoordinates)
-      nY = atoi(*ppCoordinates);
+  if (*ppCoordinate)
+      nX = atoi(*ppCoordinate);
+  ++ppCoordinate;
+  if (*ppCoordinate)
+      nY = atoi(*ppCoordinate);
 
   g_strfreev(ppCoordinates);
 


More information about the Libreoffice-commits mailing list