Skip to content
This repository has been archived by the owner on Jun 7, 2020. It is now read-only.

Codeblocks IDE에서 영어가 간헐적으로 쳐지지 않는 현상이 있습니다. #1

Closed
ghost opened this issue Nov 28, 2015 · 3 comments

Comments

@ghost
Copy link

ghost commented Nov 28, 2015

From @sms200207 on November 28, 2015 13:32

한글도 아니라 영어라니 무슨 기현상일까요 ㅜㅜ
어쨌든 이런 입력기 개발해 주시니 너무 감사하기만 합니다.
버그잡느라 고생하실 생각 하니 존경스럽습니다.

Copied from original issue: dasom-im/dasom#36

@ghost
Copy link
Author

ghost commented Nov 28, 2015

From @sms200207 on November 28, 2015 13:36

귀차니즘을 덜기 위해서(:
http://codeblocks.org

or

sudo apt-get install codeblocks

@ghost
Copy link
Author

ghost commented Nov 28, 2015

@sms200207
hook-gdk-event-key 를 체크 해제하고 사용하시기 바랍니다.
screenshot from 2015-11-28 23 49 09

@ghost
Copy link
Author

ghost commented Nov 28, 2015

아래처럼 바꾸면 이클립스 끝글자 버그를 회피할 수 없는 문제가 발생합니다. dasom-im/dasom#29

hodong@debian:~/dasom-gtk$ git diff
diff --git a/src/im-dasom.c b/src/im-dasom.c
index 8795b20..c878386 100644
--- a/src/im-dasom.c
+++ b/src/im-dasom.c
@@ -44,6 +44,7 @@ struct _DasomGtkIMContext
   gboolean      is_reset_on_gdk_button_press_event;
   gboolean      is_hook_gdk_event_key;
   gboolean      has_focus;
+  gboolean      has_event_handler;
 };

 struct _DasomGtkIMContextClass
@@ -167,12 +168,24 @@ dasom_gtk_im_context_set_client_window (GtkIMContext *context,

   if (ds_context->client_window)
   {
+    if (ds_context->has_event_handler)
+    {
+      ds_context->has_event_handler = FALSE;
+      gdk_window_remove_filter (ds_context->client_window,
+                                (GdkFilterFunc) on_gdk_x_event, ds_context);
+    }
+
     g_object_unref (ds_context->client_window);
     ds_context->client_window = NULL;
   }

   if (window)
+  {
     ds_context->client_window = g_object_ref (window);
+    ds_context->has_event_handler = TRUE;
+    gdk_window_add_filter (ds_context->client_window,
+                           (GdkFilterFunc) on_gdk_x_event, ds_context);
+  }
 }

 static void
@@ -300,7 +313,7 @@ on_commit (DasomIM           *im,
            const gchar       *text,
            DasomGtkIMContext *context)
 {
-  g_debug (G_STRLOC ": %s", G_STRFUNC);
+  g_debug (G_STRLOC ": %p: %s |%s|", context, G_STRFUNC, text);

   g_signal_emit_by_name (context, "commit", text);
 }
@@ -416,8 +429,6 @@ dasom_gtk_im_context_init (DasomGtkIMContext *context)
                     context);
   g_signal_connect (context->settings, "changed::hook-gdk-event-key",
                     G_CALLBACK (on_changed_hook_gdk_event_key), context);
-
-  gdk_window_add_filter (NULL, (GdkFilterFunc) on_gdk_x_event, context);;
 }

 static void
@@ -427,7 +438,9 @@ dasom_gtk_im_context_finalize (GObject *object)

   DasomGtkIMContext *context = DASOM_GTK_IM_CONTEXT (object);

-  gdk_window_remove_filter (NULL, (GdkFilterFunc) on_gdk_x_event, context);
+  if (context->has_event_handler)
+    gdk_window_remove_filter (context->client_window,
+                              (GdkFilterFunc) on_gdk_x_event, context);

   g_object_unref (context->im);
   g_object_unref (context->settings);

@ghost ghost closed this as completed in b71bc77 Nov 28, 2015
ghost pushed a commit that referenced this issue Nov 28, 2015
This issue was closed.
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

0 participants