[前][次][番号順一覧][スレッド一覧]

sylpheed-jp:3302

From: Hiroyuki Yamamoto <Hiroyuki Yamamoto <hiro-y@xxxxxxxxxx>>
Date: Thu, 2 Feb 2006 11:36:10 +0900
Subject: [sylpheed-jp:03302] Re: クイックサーチ?で日本語の入力がうまくできません

山本です。

On Wed, 1 Feb 2006 23:35:26 +0900
Hiroyuki Yamamoto <hiro-y@xxxxxxxxxx> wrote:

> 実はクイックサーチのエントリにはショートカットキー対策として特別な処理
> を入れています(何もしなければ確実にメニューにキー入力を取られます)。
> 
> (具体的には、メニューがショートカットキーとして認識する前にトップレベ
> ルウィンドウでキー入力を受け取り、モディファイアキーのないショートカッ
> トキーと一致した場合は、エントリに自前で文字を入力します。そうでなかっ
> た場合はイベントをスルーします。)
> 
> uim+Anthy, SCIM+Anthy, Win32のimimeでは問題なかったのですが、IMによっ
> ては問題が起こるのかもしれません。IMをオフにしている場合でも起こるのは
> 謎ですが。
> 
> ちょっといろいろいじってみたいと思います。

こちらでもXIM(uim-xim)で再現しました。ということで修正してみました。

svn trunkか、または以下のパッチを試してみてください。

ちなみに、ショートカットキーの検索と自前で文字を入力するのをやめ、単純に
イベントを伝播させるように変更しています。


Index: src/mainwindow.c
===================================================================
--- src/mainwindow.c	(revision 958)
+++ src/mainwindow.c	(working copy)
@@ -2689,39 +2689,16 @@
 	if (!mainwin)
 		return FALSE;
 
-	if (GTK_WIDGET_HAS_FOCUS(mainwin->summaryview->search_entry)) {
-		/* g_print("keyval: %d, state: %d\n",
-			   event->keyval, event->state); */
-		if ((event->state & (GDK_MOD1_MASK|GDK_CONTROL_MASK)) != 0)
-			return FALSE;
+	if (!GTK_WIDGET_HAS_FOCUS(mainwin->summaryview->search_entry))
+		return FALSE;
 
-		if (gtk_accel_group_query(mainwin->menu_factory->accel_group,
-					  event->keyval,
-					  event->state & ~GDK_LOCK_MASK,
-					  NULL) != NULL) {
-			gunichar ch;
+	/* g_print("keyval: %d, state: %d\n", event->keyval, event->state); */
+	if ((event->state & (GDK_MOD1_MASK|GDK_CONTROL_MASK)) != 0)
+		return FALSE;
 
-			ch = gdk_keyval_to_unicode(event->keyval);
-			if (ch != 0) {
-				gchar str[7];
-				gint len;
-				gint pos;
-				GtkEditable *editable;
+	gtk_window_propagate_key_event(GTK_WINDOW(widget), event);
 
-				editable = GTK_EDITABLE
-					(mainwin->summaryview->search_entry);
-				len = g_unichar_to_utf8(ch, str);
-				gtk_editable_delete_selection(editable);
-				pos = gtk_editable_get_position(editable);
-				gtk_editable_insert_text
-					(editable, str, len, &pos);
-				gtk_editable_set_position(editable, pos);
-				return TRUE;
-			}
-		}
-	}
-
-	return FALSE;
+	return TRUE;
 }
 
 static gint main_window_close_cb(GtkWidget *widget, GdkEventAny *event,


-- 
Hiroyuki Yamamoto <hiro-y@xxxxxxxxxx>


[前][次][番号順一覧][スレッド一覧]

      3299 2006-02-01 20:42 [SHITAMORI Akira <shi] クイックサーチ?で日本語の入力がうまくできません
      3300 2006-02-01 22:12 ┗[ToshiOkada <tokada@x]                                       
      3301 2006-02-01 23:35  ┗[Hiroyuki Yamamoto <h]                                     
->    3302 2006-02-02 11:36   ┗[Hiroyuki Yamamoto <h]                                   
      3303 2006-02-02 19:09    ┣[SHITAMORI Akira <shi]                                 
      3304 2006-02-03 01:02    ┗[ToshiOkada <tokada@x]