Revision: 2d96af222d8b
Author:   Etsushi Kato <[email protected]>
Date:     Thu Jun 14 21:35:12 2012
Log:      Fix behavior with GTK+ 3.

* gtk2/immodule/uim-cand-win-gtk.c
  - (uim_cand_win_gtk_init) : Init cwin->block_index_selection.
  - (uim_cand_win_gtk_set_nr_candidates) : Enclose
    gtk_list_store_clear().
  - (uim_cand_win_gtk_real_create_sub_window) : Don't use
    GTK_POLICY_NEVER for horizontal configuration, which might
    cause problem with wrap mode.
* gtk2/immodule/uim-candwin-gtk.h
  - (_UIMCandWinGtk) : Add block_index_selection member.
* gtk2/immodule/uim-cand-win-vertical-gtk.c
  - (tree_selection_change) : Prevent selection if needed.
* gtk2/candwin/gtk.c
  - (uim_cand_win_gtk_create_sub_window) : Don't use
    GTK_POLICY_NEVER.

http://code.google.com/p/uim/source/detail?r=2d96af222d8b

Modified:
 /gtk2/candwin/gtk.c
 /gtk2/immodule/uim-cand-win-gtk.c
 /gtk2/immodule/uim-cand-win-gtk.h
 /gtk2/immodule/uim-cand-win-vertical-gtk.c

=======================================
--- /gtk2/candwin/gtk.c Wed Jan 11 00:17:24 2012
+++ /gtk2/candwin/gtk.c Thu Jun 14 21:35:12 2012
@@ -1086,7 +1086,7 @@

cwin->sub_window.scrolled_window = scrwin = gtk_scrolled_window_new(NULL, NULL);
   gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrwin),
-                                 GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
+ GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);

   cwin->sub_window.text_view = text_view = gtk_text_view_new();
   gtk_text_view_set_editable(GTK_TEXT_VIEW(text_view), FALSE);
=======================================
--- /gtk2/immodule/uim-cand-win-gtk.c   Wed Jan 11 00:17:24 2012
+++ /gtk2/immodule/uim-cand-win-gtk.c   Thu Jun 14 21:35:12 2012
@@ -168,6 +168,8 @@

   uim_cand_win_gtk_get_window_pos_type(cwin);

+  cwin->block_index_selection = FALSE;
+
   cwin->cursor.x = cwin->cursor.y = 0;
   cwin->cursor.width = cwin->cursor.height = 0;

@@ -323,8 +325,11 @@
   /* remove old data */
if (cwin->page_index >= 0 && cwin->page_index < (int) cwin->stores->len) {
     /* Remove data from current page to shrink the window */
-    if (cwin->stores->pdata[cwin->page_index])
+    if (cwin->stores->pdata[cwin->page_index]) {
+      cwin->block_index_selection = TRUE;
       gtk_list_store_clear(cwin->stores->pdata[cwin->page_index]);
+      cwin->block_index_selection = FALSE;
+    }
   }
   for (i = cwin->stores->len - 1; i >= 0; i--) {
     GtkListStore *store = g_ptr_array_remove_index(cwin->stores, i);
@@ -791,7 +796,7 @@

cwin->sub_window.scrolled_window = scrwin = gtk_scrolled_window_new(NULL, NULL);
   gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrwin),
-                                GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
+                                GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);

   cwin->sub_window.text_view = text_view = gtk_text_view_new();
   gtk_text_view_set_editable(GTK_TEXT_VIEW(text_view), FALSE);
=======================================
--- /gtk2/immodule/uim-cand-win-gtk.h   Wed Jan 11 00:17:24 2012
+++ /gtk2/immodule/uim-cand-win-gtk.h   Thu Jun 14 21:35:12 2012
@@ -73,6 +73,7 @@
   UimCandWinPos         position;

   GdkRectangle  cursor;
+  gboolean block_index_selection;

   /* sub window */
   struct sub_window {
=======================================
--- /gtk2/immodule/uim-cand-win-vertical-gtk.c  Wed Jan 11 00:17:24 2012
+++ /gtk2/immodule/uim-cand-win-vertical-gtk.c  Thu Jun 14 21:35:12 2012
@@ -198,6 +198,9 @@

   if (!cwin)
     return TRUE;
+
+  if (cwin->block_index_selection)
+    return TRUE;

   indicies = gtk_tree_path_get_indices(path);
   g_return_val_if_fail(indicies, TRUE);

Reply via email to