Revision: 7c1044fbf9ae
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=7c1044fbf9ae
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 Sun Jun 10 00:27:29 2012
+++ /gtk2/candwin/gtk.c Thu Jun 14 21:35:12 2012
@@ -1094,7 +1094,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 Sun Jun 10 00:27:29 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;
@@ -331,8 +333,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);
@@ -803,7 +808,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);