diff options
author | nyamatongwe <devnull@localhost> | 2009-06-13 00:12:31 +0000 |
---|---|---|
committer | nyamatongwe <devnull@localhost> | 2009-06-13 00:12:31 +0000 |
commit | f83529ee83a074eab642f6e294b2443d1fb4dda5 (patch) | |
tree | dc585f5a5e391e0125d9998cdae644faf52b51bb | |
parent | 33e228945100aba33dabd40a8cbe77e621ba1bd3 (diff) | |
download | scintilla-mirror-f83529ee83a074eab642f6e294b2443d1fb4dda5.tar.gz |
Patch from Wingware to make width of autocompletion more
consistent by ensuring width of pixmap taken into account
even when no pixmap yet displayed.
-rw-r--r-- | gtk/PlatGTK.cxx | 31 |
1 files changed, 26 insertions, 5 deletions
diff --git a/gtk/PlatGTK.cxx b/gtk/PlatGTK.cxx index 588d067a2..82d0a9b99 100644 --- a/gtk/PlatGTK.cxx +++ b/gtk/PlatGTK.cxx @@ -1964,6 +1964,9 @@ class ListBoxX : public ListBox { int current; #endif void *pixhash; +#if GTK_MAJOR_VERSION >= 2 + GtkCellRenderer* pixbuf_renderer; +#endif int lineHeight; XPMSet xset; bool unicodeMode; @@ -1979,6 +1982,9 @@ public: #if GTK_MAJOR_VERSION < 2 current = 0; #endif +#if GTK_MAJOR_VERSION >= 2 + pixbuf_renderer = 0; +#endif } virtual ~ListBoxX() { if (pixhash) { @@ -2115,12 +2121,13 @@ void ListBoxX::Create(Window &, int, Point, int, bool) { gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_FIXED); gtk_tree_view_column_set_title(column, "Autocomplete"); - GtkCellRenderer *renderer = gtk_cell_renderer_pixbuf_new(); - gtk_tree_view_column_pack_start(column, renderer, FALSE); - gtk_tree_view_column_add_attribute(column, renderer, + pixbuf_renderer = gtk_cell_renderer_pixbuf_new(); + gtk_cell_renderer_set_fixed_size(pixbuf_renderer, 0, -1); + gtk_tree_view_column_pack_start(column, pixbuf_renderer, FALSE); + gtk_tree_view_column_add_attribute(column, pixbuf_renderer, "pixbuf", PIXBUF_COLUMN); - - renderer = gtk_cell_renderer_text_new(); + + GtkCellRenderer* renderer = gtk_cell_renderer_text_new(); gtk_cell_renderer_text_set_fixed_height_from_font(GTK_CELL_RENDERER_TEXT(renderer), 1); gtk_tree_view_column_pack_start(column, renderer, TRUE); gtk_tree_view_column_add_attribute(column, renderer, @@ -2222,6 +2229,12 @@ PRectangle ListBoxX::GetDesiredRect() { } int ListBoxX::CaretFromEdge() { +#if GTK_MAJOR_VERSION >= 2 + gint renderer_width, renderer_height; + gtk_cell_renderer_get_fixed_size(pixbuf_renderer, &renderer_width, + &renderer_height); + return 4 + renderer_width; +#endif return 4 + xset.GetWidth(); } @@ -2308,6 +2321,14 @@ void ListBoxX::Append(char *s, int type) { gtk_list_store_set(GTK_LIST_STORE(store), &iter, PIXBUF_COLUMN, list_image->pixbuf, TEXT_COLUMN, s, -1); + + gint pixbuf_width = gdk_pixbuf_get_width(list_image->pixbuf); + gint renderer_height, renderer_width; + gtk_cell_renderer_get_fixed_size(pixbuf_renderer, + &renderer_width, &renderer_height); + if (pixbuf_width > renderer_width) + gtk_cell_renderer_set_fixed_size(pixbuf_renderer, + pixbuf_width, -1); } else { gtk_list_store_set(GTK_LIST_STORE(store), &iter, TEXT_COLUMN, s, -1); |