summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/ui/tools/text-tool.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/ui/tools/text-tool.cpp b/src/ui/tools/text-tool.cpp
index 3c2b5400b..6b35990aa 100644
--- a/src/ui/tools/text-tool.cpp
+++ b/src/ui/tools/text-tool.cpp
@@ -160,6 +160,7 @@ void TextTool::setup() {
gtk_im_context_set_client_window(this->imc,
gtk_widget_get_window (canvas));
+ g_signal_connect(G_OBJECT(canvas), "motion_notify_event", G_CALLBACK(sptc_focus_in), this);
g_signal_connect(G_OBJECT(canvas), "focus_in_event", G_CALLBACK(sptc_focus_in), this);
g_signal_connect(G_OBJECT(canvas), "focus_out_event", G_CALLBACK(sptc_focus_out), this);
g_signal_connect(G_OBJECT(this->imc), "commit", G_CALLBACK(sptc_commit), this);
@@ -1793,8 +1794,11 @@ static void sp_text_context_forget_text(TextTool *tc)
*/
}
-gint sptc_focus_in(GtkWidget */*widget*/, GdkEventFocus */*event*/, TextTool *tc)
+gint sptc_focus_in(GtkWidget *widget, GdkEventFocus */*event*/, TextTool *tc)
{
+ if (!gtk_widget_is_focus (widget)) {
+ gtk_widget_grab_focus(widget);
+ }
gtk_im_context_focus_in(tc->imc);
return FALSE;
}