135 lines
6.6 KiB
Plaintext
135 lines
6.6 KiB
Plaintext
|
src/libide/tree/ide-tree.c (597) static void ide_tree_init (IdeTree *self) {.}
|
||
|
src/libide/tree/ide-tree-model.c (663) static void tree_model_iface_init (GtkTreeModelIface *iface) {.}
|
||
|
|
||
|
|
||
|
src/libide/tree/ide-tree-node.c (31) Since: 3.32
|
||
|
* The #IdeTreeNode class is used to represent an item that should be displayed in the tree of the Ide application.
|
||
|
* The #IdeTreeAddin plugins create and maintain these nodes during the lifetime of the program.
|
||
|
* Plugins that want to add items to the tree should implement the #IdeTreeAddin interface and register it during plugin initialization.
|
||
|
|
||
|
src/libide/tree/ide-tree-node.c (127) enum {
|
||
|
PROP_0,
|
||
|
PROP_CHILDREN_POSSIBLE,
|
||
|
PROP_DESTROY_ITEM,
|
||
|
PROP_DISPLAY_NAME,
|
||
|
PROP_EXPANDED_ICON,
|
||
|
PROP_EXPANDED_ICON_NAME,
|
||
|
PROP_HAS_ERROR,
|
||
|
PROP_ICON,
|
||
|
PROP_ICON_NAME,
|
||
|
PROP_IS_HEADER,
|
||
|
PROP_ITEM,
|
||
|
PROP_RESET_ON_COLLAPSE,
|
||
|
PROP_TAG,
|
||
|
PROP_USE_MARKUP,
|
||
|
N_PROPS
|
||
|
};
|
||
|
|
||
|
src/libide/tree/ide-tree-node.c (48) struct _IdeTreeNode
|
||
|
{
|
||
|
GObject parent_instance;
|
||
|
|
||
|
/* A pointer to the model, which is only set on the root node. */
|
||
|
IdeTreeModel *model;
|
||
|
|
||
|
/* The following are fields containing the values for various properties on the tree node.
|
||
|
* Usually, icon, display_name, and item will be set on all nodes. */
|
||
|
GIcon *icon;
|
||
|
GIcon *expanded_icon;
|
||
|
gchar *display_name;
|
||
|
GObject *item;
|
||
|
gchar *tag;
|
||
|
GList *emblems;
|
||
|
|
||
|
/* The following items are used to maintain a tree structure of nodes for which we can use O(1) operations.
|
||
|
* The link is inserted into the parents children queue. The parent pointer is unowned, and set by the parent (cleared upon removal).
|
||
|
* This also allows maintaining the tree structure with zero additional allocations beyond the nodes themselves.
|
||
|
*/
|
||
|
IdeTreeNode *parent;
|
||
|
GQueue children;
|
||
|
GList link;
|
||
|
|
||
|
/* Foreground and Background colors */
|
||
|
GdkRGBA background;
|
||
|
GdkRGBA foreground;
|
||
|
|
||
|
/* Flags for state cell renderer */
|
||
|
IdeTreeNodeFlags flags;
|
||
|
|
||
|
/* When did we start loading? This is used to avoid drawing "Loading..." when the tree loads really quickly. Otherwise, we risk looking janky when the loads are quite fast. */
|
||
|
gint64 started_loading_at;
|
||
|
|
||
|
/* If we're currently loading */
|
||
|
guint is_loading : 1;
|
||
|
|
||
|
/* If the node is a header (bold, etc) */
|
||
|
guint is_header : 1;
|
||
|
|
||
|
/* If this is a synthesized empty node */
|
||
|
guint is_empty : 1;
|
||
|
|
||
|
/* If there are errors associated with the node's item */
|
||
|
guint has_error : 1;
|
||
|
|
||
|
/* If the node maybe has children */
|
||
|
guint children_possible : 1;
|
||
|
|
||
|
/* If this node needs to have the children built */
|
||
|
guint needs_build_children : 1;
|
||
|
|
||
|
/* If true, we remove all children on collapse */
|
||
|
guint reset_on_collapse : 1;
|
||
|
|
||
|
/* If pango markup should be used */
|
||
|
guint use_markup : 1;
|
||
|
|
||
|
/* If true, we use ide_clear_and_destroy_object() */
|
||
|
guint destroy_item : 1;
|
||
|
|
||
|
/* If colors are set */
|
||
|
guint background_set : 1;
|
||
|
guint foreground_set : 1;
|
||
|
};
|
||
|
|
||
|
src/libide/tree/ide-tree-node.c (1763) /* If the node is not on screen, we need to animate until we get there. */
|
||
|
src/libide/tree/ide-tree-node.c (1776) /* FIXME: Time period comes from gtk animation duration. Not curently available in pubic API.
|
||
|
* We need to be greater than the max timeout it could take to move, since we must have it on screen by then.
|
||
|
* One alternative might be to check the result and if we are still not on screen, then just pin it to a row-height from the top or bottom.
|
||
|
|
||
|
/----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------/
|
||
|
|
||
|
src/libide/tree/ide-tree-addin.c (108) /* ide_tree_addin_build_children_async() Since: 3.32
|
||
|
* This function is called when building the children of a node.
|
||
|
* This happens when expanding an node that might have children, or building the root node.
|
||
|
* You may want to use ide_tree_node_holds() to determine if the node contains an item that you are interested in.
|
||
|
* This function will call the synchronous form of IdeTreeAddin.build_children() if no asynchronous form is available.
|
||
|
|
||
|
src/libide/tree/ide-tree-addin.c (143) /* ide_tree_addin_build_children_finish() Since: 3.32
|
||
|
* Completes an asynchronous request to ide_tree_addin_build_children_async().
|
||
|
* Returns: %TRUE if successful; otherwise %FALSE and @error is set.
|
||
|
|
||
|
src/libide/tree/ide-tree-addin.c (167) /* ide_tree_addin_build_node() Since: 3.32
|
||
|
* This function is called when preparing a node for display in the tree.
|
||
|
* Addins should adjust any state on the node that makes sense based on the addin.
|
||
|
* You may want to use ide_tree_node_holds() to determine if the node contains an item that you are interested in.
|
||
|
|
||
|
src/libide/tree/ide-tree-addin.c (194) /* ide_tree_addin_activated() Since: 3.32
|
||
|
* This function is called when a node has been activated in the tree and allows for the addin to perform any necessary operations in response to that.
|
||
|
* If the addin performs an action based on the activation request, then it should return %TRUE from this function so that no further addins may respond to the action.
|
||
|
* Returns: %TRUE if the activation was handled, otherwise %FALSE
|
||
|
|
||
|
/----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------/
|
||
|
|
||
|
src/libide/tree/ide-cell-renderer-status (29) #define CELL_HEIGHT 16, CELL_WIDTH 16, RPAD 8, LPAD 3
|
||
|
|
||
|
/----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------/
|
||
|
|
||
|
src/libide/gui/ide-cell-renderer-fancy.c (166)
|
||
|
HACK: @width is the min_width returned in our get_preferred_width() function. That results in pretty bad values here, so we will do this by assuming we are the only widget in the tree view.
|
||
|
* This makes this cell very much not usable for generic situations, but it does make it so we can do text wrapping without resorting to GtkListBox *for our exact usecase only*.
|
||
|
* The problem here is that we require the widget to already be realized and allocated and that we are the only renderer within the only column (and also, in a treeview) without exotic styling.
|
||
|
* If we get something absurdly small (like 50) that is because we are hitting our minimum size of (xpad * 2).
|
||
|
* So this works around the issue and tries to get something reasonable with wrapping at the 200px mark (our ~default width for panels).
|
||
|
* Furthermore, we need to queue a resize when the column size changes (as it will from resizing the widget). So the tree view must also call gtk_tree_view_column_queue_resize().
|
||
|
|