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

📄 gtklist.c

📁 gtk是linux一款强大的夸平台的图形化开发工具
💻 C
📖 第 1 页 / 共 5 页
字号:
      if (GTK_LIST (container)->last_focus_child)	gtk_container_set_focus_child	  (container, GTK_LIST (container)->last_focus_child);      if (GTK_CONTAINER_CLASS (parent_class)->focus)	return_val = GTK_CONTAINER_CLASS (parent_class)->focus (container,								direction);    }  if (!return_val)    {      GtkList *list;      list =  GTK_LIST (container);      if (list->selection_mode == GTK_SELECTION_EXTENDED && list->anchor >= 0)	gtk_list_end_selection (list);      if (container->focus_child)	list->last_focus_child = container->focus_child;    }  return return_val;}/* Public GtkList Methods : * * gtk_list_insert_items * gtk_list_append_items * gtk_list_prepend_items * gtk_list_remove_items * gtk_list_remove_items_no_unref * gtk_list_clear_items * * gtk_list_child_position */voidgtk_list_insert_items (GtkList *list,		       GList   *items,		       gint	position){  GtkWidget *widget;  GList *tmp_list;  GList *last;  gint nchildren;  g_return_if_fail (list != NULL);  g_return_if_fail (GTK_IS_LIST (list));  if (!items)    return;  gtk_list_end_drag_selection (list);  if (list->selection_mode == GTK_SELECTION_EXTENDED && list->anchor >= 0)    gtk_list_end_selection (list);  tmp_list = items;  while (tmp_list)    {      widget = tmp_list->data;      tmp_list = tmp_list->next;      gtk_widget_set_parent (widget, GTK_WIDGET (list));      gtk_signal_connect (GTK_OBJECT (widget), "drag_begin",			  GTK_SIGNAL_FUNC (gtk_list_signal_drag_begin),			  list);      gtk_signal_connect (GTK_OBJECT (widget), "toggle_focus_row",			  GTK_SIGNAL_FUNC (gtk_list_signal_toggle_focus_row),			  list);      gtk_signal_connect (GTK_OBJECT (widget), "select_all",			  GTK_SIGNAL_FUNC (gtk_list_signal_select_all),			  list);      gtk_signal_connect (GTK_OBJECT (widget), "unselect_all",			  GTK_SIGNAL_FUNC (gtk_list_signal_unselect_all),			  list);      gtk_signal_connect (GTK_OBJECT (widget), "undo_selection",			  GTK_SIGNAL_FUNC (gtk_list_signal_undo_selection),			  list);      gtk_signal_connect (GTK_OBJECT (widget), "start_selection",			  GTK_SIGNAL_FUNC (gtk_list_signal_start_selection),			  list);      gtk_signal_connect (GTK_OBJECT (widget), "end_selection",			  GTK_SIGNAL_FUNC (gtk_list_signal_end_selection),			  list);      gtk_signal_connect (GTK_OBJECT (widget), "extend_selection",			  GTK_SIGNAL_FUNC (gtk_list_signal_extend_selection),			  list);      gtk_signal_connect (GTK_OBJECT (widget), "scroll_horizontal",			  GTK_SIGNAL_FUNC (gtk_list_signal_scroll_horizontal),			  list);      gtk_signal_connect (GTK_OBJECT (widget), "scroll_vertical",			  GTK_SIGNAL_FUNC (gtk_list_signal_scroll_vertical),			  list);      gtk_signal_connect (GTK_OBJECT (widget), "toggle_add_mode",			  GTK_SIGNAL_FUNC (gtk_list_signal_toggle_add_mode),			  list);      gtk_signal_connect (GTK_OBJECT (widget), "select",			  GTK_SIGNAL_FUNC (gtk_list_signal_item_select),			  list);      gtk_signal_connect (GTK_OBJECT (widget), "deselect",			  GTK_SIGNAL_FUNC (gtk_list_signal_item_deselect),			  list);      gtk_signal_connect (GTK_OBJECT (widget), "toggle",			  GTK_SIGNAL_FUNC (gtk_list_signal_item_toggle),			  list);      if (GTK_WIDGET_REALIZED (widget->parent))	gtk_widget_realize (widget);      if (GTK_WIDGET_VISIBLE (widget->parent) && GTK_WIDGET_VISIBLE (widget))	{	  if (GTK_WIDGET_MAPPED (widget->parent))	    gtk_widget_map (widget);	  gtk_widget_queue_resize (widget);	}    }  nchildren = g_list_length (list->children);  if ((position < 0) || (position > nchildren))    position = nchildren;  if (position == nchildren)    {      if (list->children)	{	  tmp_list = g_list_last (list->children);	  tmp_list->next = items;	  items->prev = tmp_list;	}      else	{	  list->children = items;	}    }  else    {      tmp_list = g_list_nth (list->children, position);      last = g_list_last (items);      if (tmp_list->prev)	tmp_list->prev->next = items;      last->next = tmp_list;      items->prev = tmp_list->prev;      tmp_list->prev = last;      if (tmp_list == list->children)	list->children = items;    }    if (list->children && !list->selection &&      (list->selection_mode == GTK_SELECTION_BROWSE))    {      widget = list->children->data;      gtk_list_select_child (list, widget);    }}voidgtk_list_append_items (GtkList *list,		       GList   *items){  g_return_if_fail (list != NULL);  g_return_if_fail (GTK_IS_LIST (list));  gtk_list_insert_items (list, items, -1);}voidgtk_list_prepend_items (GtkList *list,			GList	*items){  g_return_if_fail (list != NULL);  g_return_if_fail (GTK_IS_LIST (list));  gtk_list_insert_items (list, items, 0);}voidgtk_list_remove_items (GtkList	*list,		       GList	*items){  gtk_list_remove_items_internal (list, items, FALSE);}voidgtk_list_remove_items_no_unref (GtkList	 *list,				GList	 *items){  gtk_list_remove_items_internal (list, items, TRUE);}voidgtk_list_clear_items (GtkList *list,		      gint     start,		      gint     end){  GtkContainer *container;  GtkWidget *widget;  GtkWidget *new_focus_child = NULL;  GList *start_list;  GList *end_list;  GList *tmp_list;  guint nchildren;  gboolean grab_focus = FALSE;  g_return_if_fail (list != NULL);  g_return_if_fail (GTK_IS_LIST (list));  nchildren = g_list_length (list->children);  if (nchildren == 0)    return;  if ((end < 0) || (end > nchildren))    end = nchildren;  if (start >= end)    return;  container = GTK_CONTAINER (list);  gtk_list_end_drag_selection (list);  if (list->selection_mode == GTK_SELECTION_EXTENDED)    {      if (list->anchor >= 0)	gtk_list_end_selection (list);      gtk_list_reset_extended_selection (list);    }  start_list = g_list_nth (list->children, start);  end_list = g_list_nth (list->children, end);  if (start_list->prev)    start_list->prev->next = end_list;  if (end_list && end_list->prev)    end_list->prev->next = NULL;  if (end_list)    end_list->prev = start_list->prev;  if (start_list == list->children)    list->children = end_list;  if (container->focus_child)    {      if (g_list_find (start_list, container->focus_child))	{	  if (start_list->prev)	    new_focus_child = start_list->prev->data;	  else if (list->children)	    new_focus_child = list->children->prev->data;	  if (GTK_WIDGET_HAS_FOCUS (container->focus_child))	    grab_focus = TRUE;	}    }  tmp_list = start_list;  while (tmp_list)    {      widget = tmp_list->data;      tmp_list = tmp_list->next;      if (widget->state == GTK_STATE_SELECTED)	gtk_list_unselect_child (list, widget);      if (widget == list->undo_focus_child)	list->undo_focus_child = NULL;      if (widget == list->last_focus_child)	list->last_focus_child = NULL;      gtk_signal_disconnect_by_data (GTK_OBJECT (widget), (gpointer) list);      gtk_widget_unparent (widget);    }  g_list_free (start_list);  if (new_focus_child)    {      if (grab_focus)	gtk_widget_grab_focus (new_focus_child);      else if (container->focus_child)	gtk_container_set_focus_child (container, new_focus_child);      if ((list->selection_mode == GTK_SELECTION_BROWSE ||	   list->selection_mode == GTK_SELECTION_EXTENDED) && !list->selection)	{	  list->last_focus_child = new_focus_child; 	  gtk_list_select_child (list, new_focus_child);	}    }  if (GTK_WIDGET_VISIBLE (list))    gtk_widget_queue_resize (GTK_WIDGET (list));}gintgtk_list_child_position (GtkList   *list,			 GtkWidget *child){  GList *children;  gint pos;  g_return_val_if_fail (list != NULL, -1);  g_return_val_if_fail (GTK_IS_LIST (list), -1);  g_return_val_if_fail (child != NULL, -1);  pos = 0;  children = list->children;  while (children)    {      if (child == GTK_WIDGET (children->data))	return pos;      pos += 1;      children = children->next;    }  return -1;}/* Private GtkList Insert/Remove Item Functions: * * gtk_list_remove_items_internal */static voidgtk_list_remove_items_internal (GtkList	 *list,				GList	 *items,				gboolean  no_unref){  GtkWidget *widget;  GtkWidget *new_focus_child;  GtkWidget *old_focus_child;  GtkContainer *container;  GList *tmp_list;  GList *work;  gboolean grab_focus = FALSE;    g_return_if_fail (list != NULL);  g_return_if_fail (GTK_IS_LIST (list));  if (!items)    return;    container = GTK_CONTAINER (list);  gtk_list_end_drag_selection (list);  if (list->selection_mode == GTK_SELECTION_EXTENDED)    {      if (list->anchor >= 0)	gtk_list_end_selection (list);      gtk_list_reset_extended_selection (list);    }  tmp_list = items;  while (tmp_list)    {      widget = tmp_list->data;      tmp_list = tmp_list->next;            if (widget->state == GTK_STATE_SELECTED)	gtk_list_unselect_child (list, widget);    }  if (container->focus_child)    {      old_focus_child = new_focus_child = container->focus_child;      if (GTK_WIDGET_HAS_FOCUS (container->focus_child))	grab_focus = TRUE;    }  else    old_focus_child = new_focus_child = list->last_focus_child;  tmp_list = items;  while (tmp_list)    {      widget = tmp_list->data;      tmp_list = tmp_list->next;      if (no_unref)	gtk_widget_ref (widget);      if (widget == new_focus_child) 	{	  work = g_list_find (list->children, widget);	  if (work)	    {	      if (work->next)		new_focus_child = work->next->data;	      else if (list->children != work && work->prev)		new_focus_child = work->prev->data;	      else		new_focus_child = NULL;	    }	}      if (widget == list->undo_focus_child)	list->undo_focus_child = NULL;      if (widget == list->last_focus_child)	list->last_focus_child = NULL;      gtk_signal_disconnect_by_data (GTK_OBJECT (widget), (gpointer) list);      list->children = g_list_remove (list->children, widget);      gtk_widget_unparent (widget);    }    if (new_focus_child && new_focus_child != old_focus_child)    {      if (grab_focus)	gtk_widget_grab_focus (new_focus_child);      else if (container->focus_child)	gtk_container_set_focus_child (container, new_focus_child);      if (list->selection_mode == GTK_SELECTION_BROWSE && !list->selection)	{	  list->last_focus_child = new_focus_child; 	  gtk_list_select_child (list, new_focus_child);	}    }  if (GTK_WIDGET_VISIBLE (list))    gtk_widget_queue_resize (GTK_WIDGET (list));}/* Public GtkList Selection Methods : * * gtk_list_set_selection_mode * gtk_list_select_item * gtk_list_unselect_item * gtk_list_select_child * gtk_list_unselect_child * gtk_list_select_all * gtk_list_unselect_all * gtk_list_extend_selection * gtk_list_end_drag_selection * gtk_list_start_selection * gtk_list_end_selection * gtk_list_toggle_row * gtk_list_toggle_focus_row * gtk_list_toggle_add_mode * gtk_list_undo_selection */voidgtk_list_set_selection_mode (GtkList	      *list,			     GtkSelectionMode  mode){  g_return_if_fail (list != NULL);  g_return_if_fail (GTK_IS_LIST (list));  if (list->selection_mode == mode)    return;  list->selection_mode = mode;  switch (mode)    {    case GTK_SELECTION_SINGLE:    case GTK_SELECTION_BROWSE:      gtk_list_unselect_all (list);      break;    default:      break;    }}voidgtk_list_select_item (GtkList *list,		      gint     item){  GList *tmp_list;  g_return_if_fail (list != NULL);  g_return_if_fail (GTK_IS_LIST (list));  tmp_list = g_list_nth (list->children, item);  if (tmp_list)    gtk_list_select_child (list, GTK_WIDGET (tmp_list->data));}voidgtk_list_unselect_item (GtkList *list,			gint	 item){  GList *tmp_list;  g_return_if_fail (list != NULL);  g_return_if_fail (GTK_IS_LIST (list));  tmp_list = g_list_nth (list->children, item);  if (tmp_list)    gtk_list_unselect_child (list, GTK_WIDGET (tmp_list->data));}voidgtk_list_select_child (GtkList	 *list,		       GtkWidget *child){  gtk_signal_emit (GTK_OBJECT (list), list_signals[SELECT_CHILD], child);}voidgtk_list_unselect_child (GtkList   *list,			 GtkWidget *child){  gtk_signal_emit (GTK_OBJECT (list), list_signals[UNSELECT_CHILD], child);}voidgtk_list_select_all (GtkList *list){  GtkContainer *container;  GList *work;   g_return_if_fail (list != NULL);  g_return_if_fail (GTK_IS_LIST (list));  if (!list->children)    return;  

⌨️ 快捷键说明

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