2004-07-08 Federico Mena Quintero <federico@ximian.com>
Fix#139290:
* gtk/gtkfilesystemmodel.c (_gtk_file_system_model_new): Add a
GError argument. Do check for errors when getting the
GtkFileFolder: get the folder and read the children before
actually creating the model. Removed obsolete code that handled
roots-changed on the file system.
(file_model_node_get_info): Assert that we don't reach the old
case to display file system roots.
(roots_changed_callback): Removed.
* gtk/gtkfilechooserdefault.c (set_list_model): Add a GError
argument, and a boolean return value. Return an error if we
cannot create the file system model. On error, set a NULL model
on the tree.
(gtk_file_chooser_default_set_current_folder): Use the error value
from set_list_model().
(gtk_file_chooser_default_set_property): Set the show_hidden
property only if the browse_files_model exists.
(gtk_file_chooser_default_unselect_path): Only operate if the
browse_files_model exists.
(check_preview_change): Check whether we have the sort_model.
(change_folder_and_display_error): Copy the path we get passed
before using it. There's a comment in there that explains why we
need to copy it; basically, if the passed path belongs to the
model, the model may go away in the middle of this function and
we'll be left with a dangling pointer.
(install_list_model_filter): Assert that the model is not NULL.
(set_current_filter): Check whether the model exists.
* gtk/gtktreeselection.c (gtk_tree_selection_get_selected): Don't
g_return_if_fail if the model is NULL.
(gtk_tree_selection_get_selected_rows): Likewise.
(gtk_tree_selection_count_selected_rows): Likewise.
(gtk_tree_selection_selected_foreach): Likewise.
(gtk_tree_selection_path_is_selected): Likewise; rather just
return FALSE.
(gtk_tree_selection_select_all): Likewise.
(gtk_tree_selection_unselect_all): Likewise.
(gtk_tree_selection_select_range): Do g_return_if_fail() if the
model is NULL.
(gtk_tree_selection_unselect_range): Likewise.
* gtk/gtkfilesystemunix.c (fill_in_names): Return immediately if
g_dir_open() fails: there is no need to set the error ourselves,
as g_dir_open() already does it.
2004-07-07 Matthias Clasen <mclasen@redhat.com>
Support separators in combo boxes and more generally in tree
views (#135873):
* gtk/gtkcombobox.h:
* gtk/gtkcombobox.c (gtk_combo_box_get_row_separator_column):
* gtk/gtkcombobox.c (gtk_combo_box_set_row_separator_column):
Add a ::row-separator-column property with getter and setter,
which can indicate a boolean model column to determine which
rows are separators.
* gtk/gtkcombobox.c: Display separator rows as separator menu
items in menu mode, and by using the new treeview separator
functionality in list mode.
* gtk/gtktreeview.h:
* gtk/gtktreeview.c (gtk_tree_view_get_row_separator_func):
* gtk/gtktreeview.c (gtk_tree_view_set_row_separator_func):
Add a callback to determine whether a row is a separator.
* gtk/gtktreeview.c (gtk_tree_view_bin_expose):
* gtk/gtktreeview.c (gtk_tree_view_create_row_drag_icon):
* gtk/gtktreeview.c (validate_row): Use the new callback
to determine whether a row is a separator, and draw it
as a separator then. Since separators should take up less
vertical space than regular rows, this requires removing
the redundant MAX(...,expander_size) calls which appear in
many places. Instead, the MAX() is now only done in
validate_row(), and only if the row is not a separator.
To catch possible side effects of this intrusive change,
I have left EXPANDER_MAX() calls in place of the MAX() calls
which will emit a warning if something breaks. They should
be removed before 2.6.
* gtk/gtktreeselection.c (row_is_selectable): Don't let
separator rows be selected.
* tests/testcombo.c (create_blaat): Add a separator column.
2004-03-05 Federico Mena Quintero <federico@ximian.com>
Fixes#136082 and #135265, patch by Morten Welinder.
* configure.in: Use AC_SYS_LARGEFILE.
* */*.c: #include <config.h>
Thu Feb 19 00:45:02 2004 Matthias Clasen <maclas@gmx.de>
* gtk/gtktreeselection.c (gtk_tree_selection_get_selected_rows):
Improve the efficiency here by prepending on the list and reverting
it after the loop. (#133435, Christian Biere)
Mon Aug 25 23:21:43 2003 Kristian Rietveld <kris@gtk.org>
Merge from stable.
Fixes#115871, reported by Michael Natterer.
* gtk/gtktreeprivate.h: added GtkTreeSelectMode enum,
added ctrl_pressed and shift_pressed bitfields,
(_gtk_tree_selection_internal_select_node): replace GdkModifierType
arg with GtkTreeSelectMode.
* gtk/gtktreeselection.c (gtk_tree_selection_set_mode),
(gtk_tree_selection_select_path), (gtk_tree_selection_unselect_path),
(_gtk_tree_selection_internal_select_node): all updated for
GdkModifierType -> GtkTreeSelectMode move.
* gtk/gtktreeview.c (gtk_tree_view_button_press): set ctrl_pressed
and shift_pressed around selection handling block,
(gtk_tree_view_real_select_cursor_row),
(gtk_tree_view_real_toggle_cursor_row),
(gtk_tree_view_real_selection_cursor_parent),
(gtk_tree_view_real_set_cursor): use ctrl_pressed and shift_pressed,
instead of checking the event state. And also updates for the
GdkModifierType -> GtkTreeSelectMode move.
2003-04-14 Michael Natterer <mitch@gimp.org>
* gtk/gtkliststore.c (gtk_list_store_move): added checks to ensure
that the iter is not reordered to its own position. Prevents model
corruption for the case that the store contains only a single item
(fixes bug #108387).
Unrelated:
* gtk/gtkliststore.c (gtk_list_store_insert): g_list_alloc() the
new list element later so we don't leak it if we decide to return
early.
* gtk/gtktreeselection.c (_gtk_tree_selection_internal_select_node):
set selection->tree_view->priv->anchor to NULL after freeing it.
Sun Mar 30 03:57:42 2003 Jonathan Blandford <jrb@gnome.org>
* gtk/gtktreeselection.c (gtk_tree_selection_get_selected_rows):
fix crash. Patch from Markus Lausser <sgop@users.sourceforge.net>
annoying everybody I will write a short summary here.
Fixes for: #102890, #103198, #102618, #93629, #100172, #101235, #96650,
#102379.
Other than that also a ListStore fix and a TreeView scrolling fix.
Those interested in the hairy details can checkout gtk+/ChangeLog.
Mon Nov 18 20:42:27 2002 Kristian Rietveld <kris@gtk.org>
* gtk/gtktreeview.c (gtk_tree_view_expand_to_path): modify and
free tmp instead of path ... (patch from #97927).
Mon Nov 18 20:31:20 2002 Kristian Rietveld <kris@gtk.org>
* gtk/gtkcellrenderertext.c (gtk_cell_renderer_text_start_editing):
only _set_text if celltext->text is not NULL. (#97815, reported
and testcase provided by Vitaly Tishkov).
Mon Nov 18 20:28:28 2002 Kristian Rietveld <kris@gtk.org>
* gtk/gtktreeselection.c (gtk_tree_selection_real_modify_range):
also update the anchor_path, makes behaviour consistent with the
other selection modification functions. (#96801, reported and
testcase provided by Vitaly Tishkov).
Mon Nov 18 20:17:56 2002 Kristian Rietveld <kris@gtk.org>
Hrm, this fixes up lots of mistakes in my swap/move code ... Some
of these mistakes where pointed out by Vitaly Tishkov in bugs
#97403, #97404, #97412, #97618.
* gtktreestore.[ch]: gtk_tree_store_move is now private, use
gtk_tree_store_move_{before,after} instead now. Lots of fixes
(more like a rewrite :) in the _move and _swap functions.
* gtkliststore.[ch]: likewise.
Sun Nov 3 21:26:20 2002 Kristian Rietveld <kris@gtk.org>
Bah, and of course I broke something ...
* gtk/gtktreeselection.c (gtk_tree_selection_selected_foreach): fix
up the mess I caused with my commit of Oct 23 fixing #50263, things
should be fine now.
Wed Oct 23 01:03:43 2002 Kristian Rietveld <kris@gtk.org>
Another feature to create truly ugly TreeViews!: style properties
for the even/odd colors used for row hinting. (#71595, reported
by Owen Taylor).
* gtk/gtktreeview.c (gtk_tree_view_class_init): add even_row_color
and odd_row_color style properties.
* gtk/gtkstyle.c (get_darkened_gc): support darken_count == 0 case,
(gtk_default_draw_flat_box): rework cell coloring code to support
user-provided even/odd row colors.
Wed Oct 23 01:01:52 2002 Kristian Rietveld <kris@gtk.org>
Cache signal IDs to speed up signal emission. This is a good speedup
because GtkTreeModel emits a big number of signals.
* gtk/gtktreemodel.c (gtk_tree_model_base_init): save IDs returned
by g_signal_new,
(gtk_tree_model_row_changed): use g_signal_emit instead of
g_signal_emit_by_name,
(gtk_tree_model_row_inserted): ditto,
(gtk_tree_model_row_has_child_toggled): ditto,
(gtk_tree_model_row_deleted): ditto,
(gtk_tree_model_rows_reordered): ditto.
Wed Oct 23 00:56:15 2002 Kristian Rietveld <kris@gtk.org>
* gtk/gtktreeselection.c (model_changed): new function,
(gtk_tree_selection_selected_foreach): monitor changes in the model,
bail out if the model has been changed from the foreach func.
(#50263, reported by Havoc Pennington).
* gtk/gtktreeselection.c (_gtk_tree_selection_internal_select_node):
free anchor if applicable (#94868, reported and testcase provided by
Daniel Elstner).
Sat Apr 13 22:49:45 2002 Kristian Rietveld <kris@gtk.org>
Fixes#75510
* gtk/gtktreeselection.c (gtk_tree_selection_get_selected): make this
function work correctly and more sane
* gtk/gtktreeview.c (gtk_tree_view_real_collapse_row): remove
node->children from rbtree before emitting GtkTreeSelection::changed
Sat Apr 13 17:15:12 2002 Kristian Rietveld <kris@gtk.org>
* gtk/gtkcellrenderertext.c (gtk_cell_renderer_text_init): dont set
the mode to GTK_CELL_RENDERER_MODE_EDITABLE by default,
(gtk_cell_renderer_text_class_init): for some reason our default for
editable was TRUE, of course this is FALSE.
(gtk_cell_renderer_text_set_property): update mode when editable
has been changed.
Mon Apr 8 20:28:54 2002 Kristian Rietveld <kris@gtk.org>
* gtk/gtktreeselection.c (gtk_tree_selection_select_path),
(gtk_tree_selection_unselect_path),
(gtk_tree_selection_path_is_selected): check the return value of
_gtk_tree_view_find_node and return if it's TRUE. This makes those
functions work somewhat saner on non-expanded trees.
Fri Apr 5 18:28:56 2002 Kristian Rietveld <kris@gtk.org>
* gtk/gtktreeselection.c (gtk_tree_selection_set_mode): free
anchor row reference after unselecting the selection (fixes#76272)
Fri Apr 5 18:27:48 2002 Kristian Rietveld <kris@gtk.org>
* gtk/gtktreeview.c (gtk_tree_view_real_expand_row): only return
when we don't have to open all children (fixes#75736)
Fri Apr 5 18:24:24 2002 Kristian Rietveld <kris@gtk.org>
* gtk/gtktreeviewcolumn.c (gtk_tree_view_column_clear): unref
cellrenderer after clearing the attributes of the renderer (fixes
#75592)
Sun Mar 3 06:39:19 2002 Tim Janik <timj@gtk.org>
* gtk/gtkfilesel.c: added compile time switch to put the tree views
into a hpaned for owen to play with.
* gtk/gtktreedatalist.c (_gtk_tree_data_list_header_free):
* gtk/gtktreeviewcolumn.c (gtk_tree_view_column_set_cell_data_func),
(gtk_tree_view_column_finalize):
* gtk/gtktreestore.c (gtk_tree_store_set_default_sort_func),
(gtk_tree_store_set_sort_func), (gtk_tree_store_finalize):
* gtk/gtktreeselection.c (gtk_tree_selection_finalize):
* gtk/gtktreemodelsort.c (gtk_tree_model_sort_reset_default_sort_func),
(gtk_tree_model_sort_set_default_sort_func),
(gtk_tree_model_sort_set_sort_func):
* gtk/gtkliststore.c (gtk_list_store_set_default_sort_func),
(gtk_list_store_set_default_sort_func),
(gtk_list_store_set_sort_func), (gtk_list_store_finalize):
add reentrancy protection around destroy() function invocation.
* gtk/gtktreeselection.c (gtk_tree_selection_set_select_function): fix
destroy function invocation (which was missing).
Wed Jan 9 19:10:07 2002 Jonathan Blandford <jrb@redhat.com>
* gtk/gtktreeselection.c
(_gtk_tree_selection_internal_select_node): Now we test we can
unselect nodes before selecting new ones.
(gtk_tree_selection_real_select_node): be careful comparing booleans.
2002-01-03 Anders Carlsson <andersca@gnu.org>
* gtk/gtktreeview.c: Rename gtk_tree_view_queue_draw_node to
_gtk_tree_view_queue_draw_node.
(gtk_tree_view_row_has_child_toggled): Only redraw one node.
* gtk/gtktreesortable.c (gtk_tree_sortable_set_sort_func):
sort_column_id can be 0.
* gtk/gtktreeselection.c (gtk_tree_selection_real_select_node):
Only redraw one the node being selected.
* gtk/gtktreeprivate.h: Add _gtk_tree_view_queue_draw_node.
Sat Nov 17 18:26:45 2001 Owen Taylor <otaylor@redhat.com>
* gtk/Makefile.am gtk/gtkmarshal.list gtk/gtkmarshalers.list
gtk/*.c gtk/gtksignal.h: Make gtkmarshal.list/gtkmarshal.h
only for compatibility with GTK+-1.2; and deprecate it;
put all marshalers we actually use into gtkmarshalers.list
and use the _gtk_marshal_ prefix for these marshalers.
2001-10-08 Havoc Pennington <hp@pobox.com>
* demos/gtk-demo/stock_browser.c: remove unused enum
* gtk/gtktreeselection.c (gtk_tree_selection_real_select_node):
pass the current selection state of the node in to the user
selection func
Thu Sep 27 16:46:36 2001 Jonathan Blandford <jrb@redhat.com>
* gtk/gtktreeview.c (gtk_tree_view_real_select_cursor_row): only
start editing when you select with a keyboard.
(gtk_tree_view_button_press_event): much more graceful now.
* gtk/gtkstyle.c: Draw togglebutton better.
Mon Aug 27 15:18:14 2001 Jonathan Blandford <jrb@redhat.com>
* gtk/gtktreeselection.c (gtk_tree_selection_set_mode): Use the
GTK selection types rather than GtkTreeSelectionMode.
* docs/Changes-2.0: Add comment about selection change.
Wed Aug 22 18:25:46 2001 Jonathan Blandford <jrb@redhat.com>
* gtk/gtktreeview.c: Fix selection. I think it's all dandy now.
We check the current event for modifiers rather than try to trap
all presses.
Sun Aug 19 03:22:59 2001 Jonathan Blandford <jrb@redhat.com>
* gtk/gtkliststore.c: Fix up warnings, #58928.
* gtk/gtktreeselection.h: Change signal prototype, #58647
* gtk/gtktreeview.c (_gdk_tree_view_find_node): Make more robust,
#59221.
* gtk/gtkstyle.c: Actually prelight arrow, #50981
Fri Aug 17 17:30:34 2001 Tim Janik <timj@gtk.org>
* gtk/gtktreemodel.c (gtk_tree_path_new_from_string): const correct
string parameter.
* gtk/gtkoptionmenu.c (gtk_option_menu_set_menu): connect to
GtkMenuShell::selection_done, now that we have it, instead of
::deactivate so we're not tearing the menu apart and notify
the user prematurely.
Thu Aug 16 05:22:01 2001 Tim Janik <timj@gtk.org>
* gtk/gtkwindow.c (gtk_window_move_resize): if we actually move our
window, clear window->need_default_position to avoid infinite loops.
some comment fixups and GTK_RESIZE_IMMEDIATE fixups.
Wed Aug 15 12:36:55 2001 Tim Janik <timj@gtk.org>
* gtk/gtktreeview.c (gtk_tree_view_set_model): move all model setup
code into this place. get rid of GTK_TREE_VIEW_MODEL_SETUP usage.
(gtk_tree_view_set_property): don't cast possible NULL objects.
(gtk_tree_view_destroy): reset the model to NULL.
* gtk/gtktreeselection.c (gtk_tree_selection_finalize): chain
parent_class handler.
Wed Jul 18 19:28:46 2001 Owen Taylor <otaylor@redhat.com>
* gtk/*.c: Patch from Matthias Clasen to remove remove
all instances of g_return_if_fail (foo != NULL); that are
immediately before a g_return_if_fail (GTK_IS_FOO (foo));
since the second check catches the NULL anyways.
Sun Jun 24 11:29:35 2001 Owen Taylor <otaylor@redhat.com>
* gdk/x11/gdkimage-x11.c (gdk_image_new): Fix stupid error
introduced last night that was making things decidedly not work.
* gtk/*.[ch]: Patch from Kristian Rietveld adding 80 getters
so that we have getter/setter pairing everywhere it makes
sense. (#55767)
* gtk/gtkradiobutton.[ch] gtk/gtktoolbar.c tests/testgtk.:
Rename gtk_radio_button_group to gtk_radio_button_get_group, add a
deprecated compat macro. (#55516)
* gtk/gtklabel.[ch]: Add functions
gtk_label_set/get_use_underline(), gtk_label_set/get_use_markup(),
gtk_label_set_label(), which mirror the property API for GtkLabel.
Make gtk_label_get_attributes() only reflect the attributes
set by gtk_label_set_attributes.
* gtk/gtknotebook.c (gtk_notebook_set_current_page) gtk/gtkcompat.h: Rename
from gtk_notebook_set_page().
Tue Jun 12 12:41:27 2001 Jonathan Blandford <jrb@redhat.com>
* gtk/gtktreemodel.h (GTK_TREE_MODEL_LIST_ONLY): further justify
gtk_tree_model_get_flags by adding a second flag for atk.
* gtk/gtktreemodel.c: make cursor behavior interact better with
mouse presses.