Commit Graph

71 Commits

Author SHA1 Message Date
Kristian Rietveld
77fc6e3539 Bug 596580 - Blank rows in entry autocompletion
gtk_tree_model_build_level() always needs to emit row-inserted when
requested, this should not depend on whether the level has a parent
level or a virtual root, which is a check whether or not we need to
reference the node in the child model.  Furthermore, we also need
to emit row-has-child-toggled after row-inserted when appropriate.

When gtk_tree_model_filter_row_changed() pulls in the root level, it
must request build_level() to emit signals for this.  The refilter
function uses row_changed to process the changes, so build_level() in
the first call to row_changed() might pull in multiple new nodes in this
scenario, for all of these signals need to be emitted.  Of course,
build_level() will then also emit the signals for the node row_changed()
is processing, we should not emit a duplicate signal, this is now
accounted for.

Add a unit test for this.  For this small functionality to block the
row-changed signal has been implemented, so that we can simulate calls
to the refilter function using the current visible column setup.
2009-09-30 10:25:48 +02:00
Kristian Rietveld
16c5339ea8 Don't access the parent level, there might not be one
Use the index instead, that can be -1.  A unit test has been added as
well.
2009-09-08 15:52:18 +02:00
Kristian Rietveld
a59c39f370 Bug 346800 - Rework sort/filter models to use indices to parents...
Rework the sort and filter models to store their reference to the parent
element as an array index instead of a pointer to an array element.
These pointers could become invalid with any array modification, whereas
indices do not.
2009-09-06 14:12:46 +02:00
Kristian Rietveld
d0051a46f7 Fix compiler warnings 2009-09-05 17:15:43 +02:00
Kristian Rietveld
f483c5b7d6 Emit row-has-child-toggled when a first node becomes visible in a level
If we have a level with zero visible nodes and the first node becomes
visible in that level, then parent has just become a "real" parent node.
In such a case we need to emit row-has-child-toggled.  This only applies
to non-root levels that have a parent.  This problem was also found when
writing the unit test, the respective cases in the unit test have been
corrected.

This fixes bugs:
 Bug 372010 - Filtering not working properly
 Bug 525965 - Filtered and sorted GtkTreeView is missing rows
2009-09-05 17:15:42 +02:00
Kristian Rietveld
0c4f29e857 When the filter removes a node, it needs to remove its children too
In gtk_tree_model_filter_remove_node(), we check if the given elt has
children.  If so, this level will be freed.  This action is recursive.
2009-09-05 17:15:42 +02:00
Kristian Rietveld
14c8149daf Properly handle cases where an ancestor node is invisible 2009-09-05 17:15:42 +02:00
Kristian Rietveld
733e532c59 Correct handling of row-has-child-toggled signal
When a filter function is used that determines the visibility property
of a node using whether or it it has children, the state of this node
very likely changes when the filter model receives a
row-has-child-toggled signal.  Therefore, we need to handle state
changes in the row-has-child-toggled handler.
2009-09-05 17:15:42 +02:00
Kristian Rietveld
af73305d37 Marking nodes invisible after pulling in the root level is wrong 2009-09-05 17:15:42 +02:00
Kristian Rietveld
532eccabde Do not emit has-child-toggled when a root level node is removed 2009-09-05 17:15:42 +02:00
Kristian Rietveld
d09c2ae965 Only emit row-inserted if all ancestors are visible 2009-09-05 17:15:41 +02:00
Kristian Rietveld
bce2a5173d Bug 573321 – additional check in gtk_tree_model_filter_convert_*
Added checks to see whether the passed iterators are not the same in
convert_child_iter_to_iter() and iter_to_child_iter() functions in both
the sort and filter models.

Fixes bug 573321, suggestion by Vadim Godunko.
2009-07-30 20:24:31 +02:00
Sven Neumann
e3c01cf601 gtk/gtktext.c gtk/gtktextbuffer.c gtk/gtktextlayout.c
2008-08-08  Sven Neumann  <sven@gimp.org>

	* gtk/gtktext.c
	* gtk/gtktextbuffer.c
	* gtk/gtktextlayout.c
	* gtk/gtktexttagtable.c
	* gtk/gtktextview.c
	* gtk/gtktipsquery.c
	* gtk/gtktoolbar.c
	* gtk/gtktoolitem.c
	* gtk/gtktreeitem.c
	* gtk/gtktreemodelfilter.c
	* gtk/gtktreemodelsort.c
	* gtk/gtktreeviewcolumn.c: use canonical signal names.


svn path=/trunk/; revision=21045
2008-08-08 14:23:32 +00:00
Matthias Clasen
ef8144bd71 Add an example to the docs
svn path=/trunk/; revision=20935
2008-08-02 04:42:36 +00:00
Johan Dahlin
d97cdbdf53 Include "config.h" instead of <config.h> Command used: find -name
2008-06-21  Johan Dahlin  <jdahlin@async.com.br>

    * *.[ch]: Include "config.h" instead of <config.h>
    Command used:
    find -name \*.[ch]|xargs perl -p -i -e 's/^#include <config.h>/#include "config.h"/g'
    Rubberstamped by Mitch and Tim


svn path=/trunk/; revision=20669
2008-06-22 14:28:52 +00:00
Michael Natterer
fe8a946e87 deprecate GtkDestroyNotify.
2008-06-18  Michael Natterer  <mitch@imendio.com>

	* gtk/gtktypeutils.h: deprecate GtkDestroyNotify.

	* gtk/gtkactiongroup.[ch]
	* gtk/gtkcombobox.[ch]
	* gtk/gtkcontainer.[ch]
	* gtk/gtkliststore.[ch]
	* gtk/gtkmain.[ch]
	* gtk/gtkmenu.c
	* gtk/gtkstock.[ch]
	* gtk/gtktreedatalist.[ch]
	* gtk/gtktreemodelfilter.[ch]
	* gtk/gtktreemodelsort.[ch]
	* gtk/gtktreeprivate.h
	* gtk/gtktreeselection.[ch]
	* gtk/gtktreesortable.[ch]
	* gtk/gtktreestore.[ch]
	* gtk/gtktreeview.[ch]
	* gtk/gtktreeviewcolumn.[ch]: s/GtkDestroyNotify/GDestroyNotify/g.


svn path=/trunk/; revision=20448
2008-06-18 09:12:32 +00:00
Kristian Rietveld
4e6561b2b2 short-circuit in case an empty root level would be build (and thus
2008-03-05  Kristian Rietveld  <kris@imendio.com>

	* gtk/gtktreemodelfilter.c (gtk_tree_model_filter_row_inserted):
	short-circuit in case an empty root level would be build (and thus
	directly destroyed) if no virtual root has been set.


svn path=/trunk/; revision=19712
2008-03-05 10:36:35 +00:00
Kristian Rietveld
496d330181 Fix a leak of the path (#504611, patch from Sadrul Habib Chowdhury).
2008-01-10  Kristian Rietveld  <kris@imendio.com>

	* gtk/gtktreemodelfilter.c (gtk_tree_model_filter_get_path): Fix
	a leak of the path (#504611, patch from Sadrul Habib Chowdhury).


svn path=/trunk/; revision=19332
2008-01-10 09:27:40 +00:00
Matthias Clasen
5c4d0d697d Don't assume that a path of depth 0 has no indices. (#467324, Szilard
2007-09-09  Matthias Clasen  <mclasen@redhat.com>

        * gtk/gtktreemodelfilter.c (gtk_tree_model_filter_rows_reordered):
        * gtk/gtktreemodelsort.c (gtk_tree_model_sort_rows_reordered): Don't
        assume that a path of depth 0 has no indices.  (#467324, Szilard
        Pfeiffer)



svn path=/trunk/; revision=18770
2007-09-09 19:48:22 +00:00
Matthias Clasen
82ce59cd0f Remove unnecessary NULL checks before g_free(). (#369666, Morten Welinder,
2007-03-09  Matthias Clasen <mclasen@redhat.com>

        * Everywhere: Remove unnecessary NULL checks before
        g_free().  (#369666, Morten Welinder, Djihed Afifi)

        * configure.in: Check for ftw.h



svn path=/trunk/; revision=17444
2007-03-09 21:57:37 +00:00
Matthias Clasen
07e7719441 Apply a cleanup patch by Kjartan Maraas (#341812)
2006-10-08  Matthias Clasen  <mclasen@redhat.com>

	* Apply a cleanup patch by Kjartan Maraas  (#341812)
2006-10-08 05:07:55 +00:00
Kristian Rietveld
38dc73faee bring zero ref count loops in sync with each other and the sort model.
2006-09-26  Kristian Rietveld  <kris@imendio.com>

	* gtk/gtktreemodelfilter.c (gtk_tree_model_filter_free_level),
	(gtk_tree_model_filter_ref_node),
	(gtk_tree_model_filter_real_unref_node): bring zero ref count loops
	in sync with each other and the sort model.
2006-09-27 14:16:47 +00:00
Kristian Rietveld
2d7405d9c6 unref the virtual root path once that node (or one if its ancestors) is
2006-09-26  Kristian Rietveld  <kris@imendio.com>

	* gtk/gtktreemodelfilter.c (gtk_tree_model_filter_init),
	(gtk_tree_model_filter_finalize), (gtk_tree_model_filter_row_deleted),
	(gtk_tree_model_filter_new): unref the virtual root path once that
	node (or one if its ancestors) is deleted, set virtual_root_deleted
	so we only unref it once.
2006-09-27 12:11:46 +00:00
Matthias Clasen
f45a35921a Commit a patch by Behdad to fix typos, omissions and other errors in the
2006-09-10  Matthias Clasen  <mclasen@redhat.com>

        * Commit a patch by Behdad to fix typos, omissions and other
        errors in the symbol aliasing, and add checks for local PLT
        entries.  (#354687, Behdad Esfahbod)
2006-09-10 06:39:16 +00:00
Kristian Rietveld
0c9e43aa75 update the refs from children to parents for all nodes, since they may all
2006-08-16  Kristian Rietveld  <kris@gtk.org>

	* gtk/gtktreemodelfilter.c (gtk_tree_model_filter_fetch_child):
	update the refs from children to parents for all nodes, since
	they may all have been moved by the insert operation. (#346800,
	patch from Jonathan Matthew).
2006-08-16 14:35:02 +00:00
Kristian Rietveld
563f28a88d report status in return value instead of spewing assertions. (#335729,
2006-06-12  Kristian Rietveld  <kris@gtk.org>

	* gtk/gtktreemodelfilter.[ch]
	(gtk_tree_model_filter_convert_child_iter_to_iter),
	(gtk_tree_model_filter_convert_child_path_to_path): report status
	in return value instead of spewing assertions.  (#335729, Yevgen
	Muntyan).
2006-06-12 14:48:43 +00:00
Matthias Clasen
6bc87f5d3b Clean up user data. (#344624, Christian Weiske)
2006-06-12  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtktreemodelfilter.c (gtk_tree_model_filter_finalize):
	Clean up user data.  (#344624, Christian Weiske)
2006-06-12 13:42:29 +00:00
Kristian Rietveld
3180e45356 need to use gtk_tree_model_filter_get_iter_full() since the path returned
2006-06-02  Kristian Rietveld  <kris@imendio.com>

	* gtk/gtktreemodelfilter.c
	(gtk_tree_model_filter_convert_child_path_to_path): need to use
	gtk_tree_model_filter_get_iter_full() since the path returned
	by gtk_real_tree_model_filter_convert_child_path_to_path() includes
	invisible nodes.
2006-06-02 18:39:25 +00:00
Kristian Rietveld
5f46cc62c1 only unref if elt->ref_count > 0, (gtk_tree_model_filter_row_deleted):
2006-05-27  Kristian Rietveld  <kris@gtk.org>

	* gtk/gtktreemodelfilter.c (gtk_tree_model_filter_remove_node):
	only unref if elt->ref_count > 0,
	(gtk_tree_model_filter_row_deleted): likewise. (Fixes #340839,
	reported by Yevgen Muntyan).
2006-05-27 21:48:46 +00:00
Matthias Clasen
113f364a37 More of the same 2006-05-14 04:25:34 +00:00
Matthias Clasen
f26aad1916 Boilerplate reduction 2006-05-02 23:56:43 +00:00
Kristian Rietveld
e3880748da Make sure we always update the virtual root, also when ->priv->root is
2006-02-21  Kristian Rietveld  <kris@imendio.com>

	* gtk/gtktreemodelfilter.c (gtk_tree_model_filter_rows_reordered):
	Make sure we always update the virtual root, also when ->priv->root
	is still NULL.  (Markku Vire)
2006-02-21 09:06:09 +00:00
Kristian Rietveld
2acb0491fb Only update the virtual root if the child path is an ancestor of the
2006-02-17  Kristian Rietveld  <kris@imendio.com>

	* gtk/gtktreemodelfilter.c (gtk_tree_model_filter_rows_reordered):
	Only update the virtual root if the child path is an ancestor
	of the virtual root.  (Patch from Markku Vire).
2006-02-17 15:00:47 +00:00
Kristian Rietveld
a25bc9a0b7 free temporary paths after usage (patch from maemo-gtk),
2006-02-08  Kristian Rietveld  <kris@imendio.com>

	* gtk/gtktreemodelfilter.c (gtk_tree_model_filter_ref_path),
	(gtk_tree_model_filter_unref_path): free temporary paths after
	usage (patch from maemo-gtk),
	(gtk_tree_model_filter_clear_cache): fix little typo in the docs
	(patch from maemo-gtk).

	* gtk/gtktreemodelsort.c (gtk_tree_model_sort_row_deleted): remove
	stale FIXME.
2006-02-08 15:20:43 +00:00
Kristian Rietveld
c50df41b52 fix stupid thinko.
2005-10-28  Kristian Rietveld  <kris@gtk.org>

	* gtk/gtktreemodelfilter.c (gtk_tree_model_filter_row_deleted): fix
	stupid thinko.
2005-10-28 17:15:15 +00:00
Matthias Clasen
feb5ffb032 Fix a C99ism. (#320000, Kazuki Iwamoto)
2005-10-28  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtktreemodelfilter.c (gtk_tree_model_filter_build_level): Fix a
	C99ism.  (#320000, Kazuki Iwamoto)
2005-10-28 14:16:45 +00:00
Kristian Rietveld
af86cec5e1 Fixes #311955, reported by Markku Vire; and a lot more.
2005-10-25  Kristian Rietveld  <kris@gtk.org>

	Fixes #311955, reported by Markku Vire; and a lot more.

	* gtk/gtktreemodelfilter.c: Made this thing work correctly.
	Levels can now have invisible nodes cached, functions have been
	rewritten/refactored to take this into account; also the logic in
	some functions has been corrected.

	Each referenced node now references all visible children or a single
	invisible child, in order to be able to monitor all changes in the
	child model required for correct operation.

	When a virtual root is set, all nodes on the virtual root level are
	referenced.

	At last, a bunch of random bug fixes and comment updates.
2005-10-25 21:00:40 +00:00
Matthias Clasen
463aab93dd Various cleanups. (#315360, Kjartan Maraas)
2005-09-13  Matthias Clasen  <mclasen@redhat.com>

	* gtk/*.c: Various cleanups.  (#315360, Kjartan Maraas)
2005-09-13 19:57:42 +00:00
Matthias Clasen
94eec04267 Intern some more strings.
2005-09-01  Matthias Clasen  <mclasen@redhat.com>

        * gdk/*.c: Intern some more strings.
        * gtk/gtkintl.h:
        * gtk/*.c: Define an I_() macro and use it instead of the
        bulky g_intern_static_string().
2005-09-01 05:11:46 +00:00
Matthias Clasen
c09cc89317 Intern type names in code generated by glib-mkenums, too.
2005-08-31  Matthias Clasen  <mclasen@redhat.com>

	* gdk/Makefile.am:
	* gtk/Makefile.am: Intern type names in code generated by
	glib-mkenums, too.

	* gtk/*.c:
	* gdk/x11/*.c:
	* gdk/*.c: Intern type names before registering the type to avoid
	unnecessary copies.
2005-08-31 16:53:43 +00:00
Matthias Clasen
ec0510a0ec Make it compile 2005-08-24 04:36:12 +00:00
Matthias Clasen
3b40a9c2d9 Fix #314335 2005-08-24 04:15:28 +00:00
Matthias Clasen
b7bd68546c Remove ambiguities pointed out by gcc.
2005-08-10  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtktreemodelfilter.c (gtk_tree_model_filter_row_deleted)
	(gtk_tree_model_filter_remove_node): Remove ambiguities pointed
	out by gcc.
2005-08-10 04:15:43 +00:00
Matthias Clasen
58824aa9bb Clarify the code, gcc 4 complains about predecrement in MAX().
2005-06-30  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtktreemodelfilter.c (gtk_tree_model_filter_fetch_child):
	Clarify the code, gcc 4 complains about predecrement in MAX().
2005-06-30 19:07:16 +00:00
Matthias Clasen
2d9b7d9587 Document the need to refilter if parameters of the visibility function
2005-03-29  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtktreemodelfilter.c (gtk_tree_model_filter_set_visible_func):
	Document the need to refilter if parameters of the visibility function
	change.  (#169516, Olivier Sessink)
2005-03-29 06:04:18 +00:00
Matthias Clasen
4c28ce0877 Use canonical names for g_object_notify() as well.
2005-03-26  Matthias Clasen  <mclasen@redhat.com>

	* gtk/*.c:
	* gdk/gdkdisplaymanager.c:
	Use canonical names for g_object_notify() as well.
2005-03-26 05:49:15 +00:00
Matthias Clasen
269d89c79c Define macros GTK_PARAM_READABLE, GTK_PARAM_WRITABLE, GTK_PARAM_READWRITE
2005-03-21  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtkprivate.h: Define macros GTK_PARAM_READABLE,
	GTK_PARAM_WRITABLE, GTK_PARAM_READWRITE which are like
	their G_ counterparts, but also mark the name, nick
	and blurb as static.

	* gtk/*.c: Mark param spec strings as static, using
	the new macros.
2005-03-22 02:14:55 +00:00
Matthias Clasen
cca8dd6347 Make PLT-reduction work with gcc4, and don't include everything in
2005-03-20  Matthias Clasen  <mclasen@redhat.com>

	Make PLT-reduction work with gcc4, and don't include
	everything in gdkalias.h:

	* gtk/grk.symbols: Group symbols by header and source file.
	* gtk/makegtkalias.pl: Protect definitions by the same
	preprocessor symbols used to guard the headers. Move
	the alias declarations to a separate file which is
	produced when calling makegtkalias.pl -def
	* gdk/Makefile.am (gtkaliasdef.c): Add a rule to generate
	this file.
	* gtk/*.c: Include gtkalias.h after the other headers,
	include gtkaliasdef.c at the bottom.
	* gtk/*.h: Small cleanups.
2005-03-20 07:01:23 +00:00
Matthias Clasen
52711c24e8 More canonical property names. 2005-03-09 06:15:13 +00:00
Matthias Clasen
9eb636fe12 Don't emit a warning if a parent node is filtered out. (#164726, Olivier
2005-02-24  Matthias Clasen  <mclasen@redhat.com>

	* gtk/gtktreemodelfilter.c (gtk_tree_model_filter_row_changed):
	Don't emit a warning if a parent node is filtered out. (#164726,
	Olivier Sessink)
2005-02-24 14:42:26 +00:00