⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gtktreeitem.c

📁 gtk是linux一款强大的夸平台的图形化开发工具
💻 C
📖 第 1 页 / 共 3 页
字号:
			    GdkEventButton *event){  g_return_val_if_fail (widget != NULL, FALSE);  g_return_val_if_fail (GTK_IS_TREE_ITEM (widget), FALSE);  g_return_val_if_fail (event != NULL, FALSE);  if (event->type == GDK_BUTTON_PRESS	&& GTK_WIDGET_IS_SENSITIVE(widget)     	&& !GTK_WIDGET_HAS_FOCUS (widget))      gtk_widget_grab_focus (widget);  return FALSE;}static gintgtk_tree_item_expose (GtkWidget      *widget,		      GdkEventExpose *event){  GdkEventExpose child_event;  GtkBin *bin;  g_return_val_if_fail (widget != NULL, FALSE);  g_return_val_if_fail (GTK_IS_TREE_ITEM (widget), FALSE);  g_return_val_if_fail (event != NULL, FALSE);  if (GTK_WIDGET_DRAWABLE (widget))    {      bin = GTK_BIN (widget);            gtk_tree_item_paint (widget, &event->area);      child_event = *event;      if (bin->child && GTK_WIDGET_NO_WINDOW (bin->child) &&	  gtk_widget_intersect (bin->child, &event->area, &child_event.area))	gtk_widget_event (bin->child, (GdkEvent*) &child_event);   }  return FALSE;}static gintgtk_tree_item_focus_in (GtkWidget     *widget,			GdkEventFocus *event){  g_return_val_if_fail (widget != NULL, FALSE);  g_return_val_if_fail (GTK_IS_TREE_ITEM (widget), FALSE);  g_return_val_if_fail (event != NULL, FALSE);  GTK_WIDGET_SET_FLAGS (widget, GTK_HAS_FOCUS);  gtk_widget_draw_focus (widget);  return FALSE;}static gintgtk_tree_item_focus_out (GtkWidget     *widget,			 GdkEventFocus *event){  g_return_val_if_fail (widget != NULL, FALSE);  g_return_val_if_fail (GTK_IS_TREE_ITEM (widget), FALSE);  g_return_val_if_fail (event != NULL, FALSE);  GTK_WIDGET_UNSET_FLAGS (widget, GTK_HAS_FOCUS);  gtk_widget_draw_focus (widget);  return FALSE;}static voidgtk_real_tree_item_select (GtkItem *item){      GtkTreeItem *tree_item;  GtkWidget *widget;  g_return_if_fail (item != NULL);  g_return_if_fail (GTK_IS_TREE_ITEM (item));  tree_item = GTK_TREE_ITEM (item);  widget = GTK_WIDGET (item);  gtk_widget_set_state (GTK_WIDGET (item), GTK_STATE_SELECTED);  if (!widget->parent || GTK_TREE (widget->parent)->view_mode == GTK_TREE_VIEW_LINE)    gtk_widget_set_state (GTK_TREE_ITEM (item)->pixmaps_box, GTK_STATE_SELECTED);}static voidgtk_real_tree_item_deselect (GtkItem *item){  GtkTreeItem *tree_item;  GtkWidget *widget;  g_return_if_fail (item != NULL);  g_return_if_fail (GTK_IS_TREE_ITEM (item));  tree_item = GTK_TREE_ITEM (item);  widget = GTK_WIDGET (item);  gtk_widget_set_state (widget, GTK_STATE_NORMAL);  if (!widget->parent || GTK_TREE (widget->parent)->view_mode == GTK_TREE_VIEW_LINE)    gtk_widget_set_state (tree_item->pixmaps_box, GTK_STATE_NORMAL);}static voidgtk_real_tree_item_toggle (GtkItem *item){  g_return_if_fail (item != NULL);  g_return_if_fail (GTK_IS_TREE_ITEM (item));  if(!GTK_WIDGET_IS_SENSITIVE(item))    return;  if (GTK_WIDGET (item)->parent && GTK_IS_TREE (GTK_WIDGET (item)->parent))    gtk_tree_select_child (GTK_TREE (GTK_WIDGET (item)->parent),			   GTK_WIDGET (item));  else    {      /* Should we really bother with this bit? A listitem not in a list?       * -Johannes Keukelaar       * yes, always be on the safe side!       * -timj       */      if (GTK_WIDGET (item)->state == GTK_STATE_SELECTED)	gtk_widget_set_state (GTK_WIDGET (item), GTK_STATE_NORMAL);      else	gtk_widget_set_state (GTK_WIDGET (item), GTK_STATE_SELECTED);    }}static voidgtk_real_tree_item_expand (GtkTreeItem *tree_item){  GtkTree* tree;    g_return_if_fail (tree_item != NULL);  g_return_if_fail (GTK_IS_TREE_ITEM (tree_item));    if (tree_item->subtree && !tree_item->expanded)    {      tree = GTK_TREE (GTK_WIDGET (tree_item)->parent);             /* hide subtree widget */      gtk_widget_show (tree_item->subtree);            /* hide button '+' and show button '-' */      if (tree_item->pixmaps_box)	{	  gtk_container_remove (GTK_CONTAINER (tree_item->pixmaps_box), 				tree_item->plus_pix_widget);	  gtk_container_add (GTK_CONTAINER (tree_item->pixmaps_box), 			     tree_item->minus_pix_widget);	}      if (tree->root_tree)	gtk_widget_queue_resize (GTK_WIDGET (tree->root_tree));      tree_item->expanded = TRUE;    }}static voidgtk_real_tree_item_collapse (GtkTreeItem *tree_item){  GtkTree* tree;    g_return_if_fail (tree_item != NULL);  g_return_if_fail (GTK_IS_TREE_ITEM (tree_item));    if (tree_item->subtree && tree_item->expanded)     {      tree = GTK_TREE (GTK_WIDGET (tree_item)->parent);            /* hide subtree widget */      gtk_widget_hide (tree_item->subtree);            /* hide button '-' and show button '+' */      if (tree_item->pixmaps_box)	{	  gtk_container_remove (GTK_CONTAINER (tree_item->pixmaps_box), 				tree_item->minus_pix_widget);	  gtk_container_add (GTK_CONTAINER (tree_item->pixmaps_box), 			     tree_item->plus_pix_widget);	}      if (tree->root_tree)	gtk_widget_queue_resize (GTK_WIDGET (tree->root_tree));      tree_item->expanded = FALSE;    }}static voidgtk_tree_item_destroy (GtkObject *object){  GtkTreeItem* item;  GtkWidget* child;  g_return_if_fail (object != NULL);  g_return_if_fail (GTK_IS_TREE_ITEM (object));#ifdef TREE_DEBUG  g_message("+ gtk_tree_item_destroy [object %#x]\n", (int)object);#endif /* TREE_DEBUG */  item = GTK_TREE_ITEM(object);  /* free sub tree if it exist */  child = item->subtree;  if (child)    {      gtk_widget_ref (child);      gtk_widget_unparent (child);      gtk_widget_destroy (child);      gtk_widget_unref (child);      item->subtree = NULL;    }    /* free pixmaps box */  child = item->pixmaps_box;  if (child)    {      gtk_widget_ref (child);      gtk_widget_unparent (child);      gtk_widget_destroy (child);      gtk_widget_unref (child);      item->pixmaps_box = NULL;    }      /* destroy plus pixmap */  if (item->plus_pix_widget)    {      gtk_widget_destroy (item->plus_pix_widget);      gtk_widget_unref (item->plus_pix_widget);      item->plus_pix_widget = NULL;    }    /* destroy minus pixmap */  if (item->minus_pix_widget)    {      gtk_widget_destroy (item->minus_pix_widget);      gtk_widget_unref (item->minus_pix_widget);      item->minus_pix_widget = NULL;    }    /* By removing the pixmaps here, and not in unrealize, we depend on   * the fact that a widget can never change colormap or visual.   */  gtk_tree_item_remove_pixmaps (item);    GTK_OBJECT_CLASS (parent_class)->destroy (object);  #ifdef TREE_DEBUG  g_message("- gtk_tree_item_destroy\n");#endif /* TREE_DEBUG */}voidgtk_tree_item_remove_subtree (GtkTreeItem* item) {  g_return_if_fail (item != NULL);  g_return_if_fail (GTK_IS_TREE_ITEM(item));  g_return_if_fail (item->subtree != NULL);    if (GTK_TREE (item->subtree)->children)    {      /* The following call will remove the children and call       * gtk_tree_item_remove_subtree() again. So we are done.       */      gtk_tree_remove_items (GTK_TREE (item->subtree), 			     GTK_TREE (item->subtree)->children);      return;    }  if (GTK_WIDGET_MAPPED (item->subtree))    gtk_widget_unmap (item->subtree);        gtk_widget_unparent (item->subtree);    if (item->pixmaps_box)    gtk_widget_hide (item->pixmaps_box);    item->subtree = NULL;  if (item->expanded)    {      item->expanded = FALSE;      if (item->pixmaps_box)	{	  gtk_container_remove (GTK_CONTAINER (item->pixmaps_box), 				item->minus_pix_widget);	  gtk_container_add (GTK_CONTAINER (item->pixmaps_box), 			     item->plus_pix_widget);	}    }}static voidgtk_tree_item_map (GtkWidget *widget){  GtkBin *bin;  GtkTreeItem* item;  g_return_if_fail (widget != NULL);  g_return_if_fail (GTK_IS_TREE_ITEM (widget));  bin = GTK_BIN (widget);  item = GTK_TREE_ITEM(widget);  GTK_WIDGET_SET_FLAGS (widget, GTK_MAPPED);  if(item->pixmaps_box &&     GTK_WIDGET_VISIBLE (item->pixmaps_box) &&     !GTK_WIDGET_MAPPED (item->pixmaps_box))    gtk_widget_map (item->pixmaps_box);  if (bin->child &&      GTK_WIDGET_VISIBLE (bin->child) &&      !GTK_WIDGET_MAPPED (bin->child))    gtk_widget_map (bin->child);  gdk_window_show (widget->window);}static voidgtk_tree_item_unmap (GtkWidget *widget){  GtkBin *bin;  GtkTreeItem* item;  g_return_if_fail (widget != NULL);  g_return_if_fail (GTK_IS_TREE_ITEM (widget));  GTK_WIDGET_UNSET_FLAGS (widget, GTK_MAPPED);  bin = GTK_BIN (widget);  item = GTK_TREE_ITEM(widget);  gdk_window_hide (widget->window);  if(item->pixmaps_box &&     GTK_WIDGET_VISIBLE (item->pixmaps_box) &&     GTK_WIDGET_MAPPED (item->pixmaps_box))    gtk_widget_unmap (bin->child);  if (bin->child &&      GTK_WIDGET_VISIBLE (bin->child) &&      GTK_WIDGET_MAPPED (bin->child))    gtk_widget_unmap (bin->child);}static voidgtk_tree_item_forall (GtkContainer *container,		      gboolean      include_internals,		      GtkCallback   callback,		      gpointer      callback_data){  GtkBin *bin;  GtkTreeItem *tree_item;  g_return_if_fail (container != NULL);  g_return_if_fail (GTK_IS_TREE_ITEM (container));  g_return_if_fail (callback != NULL);  bin = GTK_BIN (container);  tree_item = GTK_TREE_ITEM (container);  if (bin->child)    (* callback) (bin->child, callback_data);  if (include_internals && tree_item->subtree)    (* callback) (tree_item->subtree, callback_data);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -