Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
core
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
LibreOffice
core
Commits
522a9c0a
Kaydet (Commit)
522a9c0a
authored
Tem 29, 2017
tarafından
Pranav Kant
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
lokdialog: gtv: Forward key events on dialog to core
Change-Id: Icfc210b08c7f1d8ebaf9c731ed64bb128cfc4356
üst
fb09d4aa
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
122 additions
and
4 deletions
+122
-4
gtv-lok-dialog.cxx
libreofficekit/qa/gtktiledviewer/gtv-lok-dialog.cxx
+122
-4
No files found.
libreofficekit/qa/gtktiledviewer/gtv-lok-dialog.cxx
Dosyayı görüntüle @
522a9c0a
...
@@ -8,9 +8,11 @@
...
@@ -8,9 +8,11 @@
*/
*/
#include <gtk/gtk.h>
#include <gtk/gtk.h>
#include <gdk/gdkkeysyms.h>
#include <cmath>
#include <cmath>
#include <iostream>
#include <iostream>
#include <sstream>
#include <LibreOfficeKit/LibreOfficeKitGtk.h>
#include <LibreOfficeKit/LibreOfficeKitGtk.h>
#include <LibreOfficeKit/LibreOfficeKitEnums.h>
#include <LibreOfficeKit/LibreOfficeKitEnums.h>
...
@@ -136,7 +138,7 @@ gtv_lok_dialog_signal_button(GtkWidget* pDialogDrawingArea, GdkEventButton* pEve
...
@@ -136,7 +138,7 @@ gtv_lok_dialog_signal_button(GtkWidget* pDialogDrawingArea, GdkEventButton* pEve
(
pEvent
->
y
),
(
pEvent
->
y
),
nCount
,
nCount
,
nEventButton
,
nEventButton
,
0
/* Modifier */
);
priv
->
m_nKeyModifier
);
break
;
break
;
}
}
...
@@ -167,7 +169,7 @@ gtv_lok_dialog_signal_button(GtkWidget* pDialogDrawingArea, GdkEventButton* pEve
...
@@ -167,7 +169,7 @@ gtv_lok_dialog_signal_button(GtkWidget* pDialogDrawingArea, GdkEventButton* pEve
(
pEvent
->
y
),
(
pEvent
->
y
),
nCount
,
nCount
,
nEventButton
,
nEventButton
,
0
/* Modifier */
);
priv
->
m_nKeyModifier
);
break
;
break
;
}
}
default:
default:
...
@@ -198,7 +200,119 @@ gtv_lok_dialog_signal_motion(GtkWidget* pDialogDrawingArea, GdkEventButton* pEve
...
@@ -198,7 +200,119 @@ gtv_lok_dialog_signal_motion(GtkWidget* pDialogDrawingArea, GdkEventButton* pEve
(
pEvent
->
y
),
(
pEvent
->
y
),
1
,
1
,
priv
->
m_nLastButtonPressed
,
priv
->
m_nLastButtonPressed
,
0
/* Modifier */
);
priv
->
m_nKeyModifier
);
return
FALSE
;
}
static
gboolean
gtv_lok_dialog_signal_key
(
GtkWidget
*
pDialogDrawingArea
,
GdkEventKey
*
pEvent
)
{
GtvLokDialog
*
pDialog
=
GTV_LOK_DIALOG
(
gtk_widget_get_toplevel
(
pDialogDrawingArea
));
GtvLokDialogPrivate
*
priv
=
getPrivate
(
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
));
int
nCharCode
=
0
;
int
nKeyCode
=
0
;
priv
->
m_nKeyModifier
&=
KEY_MOD2
;
switch
(
pEvent
->
keyval
)
{
case
GDK_KEY_BackSpace
:
nKeyCode
=
com
::
sun
::
star
::
awt
::
Key
::
BACKSPACE
;
break
;
case
GDK_KEY_Delete
:
nKeyCode
=
com
::
sun
::
star
::
awt
::
Key
::
DELETE
;
break
;
case
GDK_KEY_Return
:
case
GDK_KEY_KP_Enter
:
nKeyCode
=
com
::
sun
::
star
::
awt
::
Key
::
RETURN
;
break
;
case
GDK_KEY_Escape
:
nKeyCode
=
com
::
sun
::
star
::
awt
::
Key
::
ESCAPE
;
break
;
case
GDK_KEY_Tab
:
nKeyCode
=
com
::
sun
::
star
::
awt
::
Key
::
TAB
;
break
;
case
GDK_KEY_Down
:
nKeyCode
=
com
::
sun
::
star
::
awt
::
Key
::
DOWN
;
break
;
case
GDK_KEY_Up
:
nKeyCode
=
com
::
sun
::
star
::
awt
::
Key
::
UP
;
break
;
case
GDK_KEY_Left
:
nKeyCode
=
com
::
sun
::
star
::
awt
::
Key
::
LEFT
;
break
;
case
GDK_KEY_Right
:
nKeyCode
=
com
::
sun
::
star
::
awt
::
Key
::
RIGHT
;
break
;
case
GDK_KEY_Page_Down
:
nKeyCode
=
com
::
sun
::
star
::
awt
::
Key
::
PAGEDOWN
;
break
;
case
GDK_KEY_Page_Up
:
nKeyCode
=
com
::
sun
::
star
::
awt
::
Key
::
PAGEUP
;
break
;
case
GDK_KEY_Insert
:
nKeyCode
=
com
::
sun
::
star
::
awt
::
Key
::
INSERT
;
break
;
case
GDK_KEY_Shift_L
:
case
GDK_KEY_Shift_R
:
if
(
pEvent
->
type
==
GDK_KEY_PRESS
)
priv
->
m_nKeyModifier
|=
KEY_SHIFT
;
break
;
case
GDK_KEY_Control_L
:
case
GDK_KEY_Control_R
:
if
(
pEvent
->
type
==
GDK_KEY_PRESS
)
priv
->
m_nKeyModifier
|=
KEY_MOD1
;
break
;
case
GDK_KEY_Alt_L
:
case
GDK_KEY_Alt_R
:
if
(
pEvent
->
type
==
GDK_KEY_PRESS
)
priv
->
m_nKeyModifier
|=
KEY_MOD2
;
else
priv
->
m_nKeyModifier
&=
~
KEY_MOD2
;
break
;
default:
if
(
pEvent
->
keyval
>=
GDK_KEY_F1
&&
pEvent
->
keyval
<=
GDK_KEY_F26
)
nKeyCode
=
com
::
sun
::
star
::
awt
::
Key
::
F1
+
(
pEvent
->
keyval
-
GDK_KEY_F1
);
else
nCharCode
=
gdk_keyval_to_unicode
(
pEvent
->
keyval
);
}
// rsc is not public API, but should be good enough for debugging purposes.
// If this is needed for real, then probably a new param of type
// css::awt::KeyModifier is needed in postKeyEvent().
if
(
pEvent
->
state
&
GDK_SHIFT_MASK
)
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
);
}
}
std
::
stringstream
ss
;
ss
<<
"gtv_lok_dialog::postKey("
<<
pEvent
->
type
<<
", "
<<
nCharCode
<<
", "
<<
nKeyCode
<<
")"
;
g_info
(
"%s"
,
ss
.
str
().
c_str
());
pDocument
->
pClass
->
postDialogKeyEvent
(
pDocument
,
priv
->
dialogid
,
pEvent
->
type
==
GDK_KEY_RELEASE
?
LOK_KEYEVENT_KEYUP
:
LOK_KEYEVENT_KEYINPUT
,
nCharCode
,
nKeyCode
);
return
FALSE
;
return
FALSE
;
}
}
...
@@ -219,12 +333,16 @@ gtv_lok_dialog_init(GtvLokDialog* dialog)
...
@@ -219,12 +333,16 @@ gtv_lok_dialog_init(GtvLokDialog* dialog)
gtk_widget_add_events
(
GTK_WIDGET
(
priv
->
pDialogDrawingArea
),
gtk_widget_add_events
(
GTK_WIDGET
(
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_RELEASE_MASK
);
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
);
g_signal_connect
(
G_OBJECT
(
priv
->
pDialogDrawingArea
),
"button-release-event"
,
G_CALLBACK
(
gtv_lok_dialog_signal_button
),
nullptr
);
g_signal_connect
(
G_OBJECT
(
priv
->
pDialogDrawingArea
),
"button-release-event"
,
G_CALLBACK
(
gtv_lok_dialog_signal_button
),
nullptr
);
g_signal_connect
(
G_OBJECT
(
priv
->
pDialogDrawingArea
),
"motion-notify-event"
,
G_CALLBACK
(
gtv_lok_dialog_signal_motion
),
nullptr
);
g_signal_connect
(
G_OBJECT
(
priv
->
pDialogDrawingArea
),
"motion-notify-event"
,
G_CALLBACK
(
gtv_lok_dialog_signal_motion
),
nullptr
);
g_signal_connect
(
G_OBJECT
(
priv
->
pDialogDrawingArea
),
"key-press-event"
,
G_CALLBACK
(
gtv_lok_dialog_signal_key
),
nullptr
);
g_signal_connect
(
G_OBJECT
(
priv
->
pDialogDrawingArea
),
"key-release-event"
,
G_CALLBACK
(
gtv_lok_dialog_signal_key
),
nullptr
);
gtk_container_add
(
GTK_CONTAINER
(
pContentArea
),
priv
->
pDialogDrawingArea
);
gtk_container_add
(
GTK_CONTAINER
(
pContentArea
),
priv
->
pDialogDrawingArea
);
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment