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

📄 gtklistitem.c

📁 gtk是linux一款强大的夸平台的图形化开发工具
💻 C
📖 第 1 页 / 共 2 页
字号:
gtk_list_item_new_with_label (const gchar *label){  GtkWidget *list_item;  GtkWidget *label_widget;  list_item = gtk_list_item_new ();  label_widget = gtk_label_new (label);  gtk_misc_set_alignment (GTK_MISC (label_widget), 0.0, 0.5);  gtk_container_add (GTK_CONTAINER (list_item), label_widget);  gtk_widget_show (label_widget);  return list_item;}voidgtk_list_item_select (GtkListItem *list_item){  gtk_item_select (GTK_ITEM (list_item));}voidgtk_list_item_deselect (GtkListItem *list_item){  gtk_item_deselect (GTK_ITEM (list_item));}static voidgtk_list_item_realize (GtkWidget *widget){  GdkWindowAttr attributes;  gint attributes_mask;  /*if (GTK_WIDGET_CLASS (parent_class)->realize)    (* GTK_WIDGET_CLASS (parent_class)->realize) (widget);*/  g_return_if_fail (widget != NULL);  g_return_if_fail (GTK_IS_LIST_ITEM (widget));  GTK_WIDGET_SET_FLAGS (widget, GTK_REALIZED);  attributes.x = widget->allocation.x;  attributes.y = widget->allocation.y;  attributes.width = widget->allocation.width;  attributes.height = widget->allocation.height;  attributes.window_type = GDK_WINDOW_CHILD;  attributes.wclass = GDK_INPUT_OUTPUT;  attributes.visual = gtk_widget_get_visual (widget);  attributes.colormap = gtk_widget_get_colormap (widget);  attributes.event_mask = (gtk_widget_get_events (widget) |			   GDK_EXPOSURE_MASK |			   GDK_BUTTON_PRESS_MASK |			   GDK_BUTTON_RELEASE_MASK |			   GDK_KEY_PRESS_MASK |			   GDK_KEY_RELEASE_MASK |			   GDK_ENTER_NOTIFY_MASK |			   GDK_LEAVE_NOTIFY_MASK);  attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP;  widget->window = gdk_window_new (gtk_widget_get_parent_window (widget), &attributes, attributes_mask);  gdk_window_set_user_data (widget->window, widget);  widget->style = gtk_style_attach (widget->style, widget->window);  gdk_window_set_background (widget->window, 			     &widget->style->base[GTK_STATE_NORMAL]);}static voidgtk_list_item_size_request (GtkWidget      *widget,			    GtkRequisition *requisition){  GtkBin *bin;  GtkRequisition child_requisition;  g_return_if_fail (widget != NULL);  g_return_if_fail (GTK_IS_LIST_ITEM (widget));  g_return_if_fail (requisition != NULL);  bin = GTK_BIN (widget);  requisition->width = (GTK_CONTAINER (widget)->border_width +			widget->style->klass->xthickness) * 2;  requisition->height = GTK_CONTAINER (widget)->border_width * 2;  if (bin->child && GTK_WIDGET_VISIBLE (bin->child))    {      gtk_widget_size_request (bin->child, &child_requisition);      requisition->width += child_requisition.width;      requisition->height += child_requisition.height;    }}static voidgtk_list_item_size_allocate (GtkWidget     *widget,			     GtkAllocation *allocation){  GtkBin *bin;  GtkAllocation child_allocation;  g_return_if_fail (widget != NULL);  g_return_if_fail (GTK_IS_LIST_ITEM (widget));  g_return_if_fail (allocation != NULL);  widget->allocation = *allocation;  if (GTK_WIDGET_REALIZED (widget))    gdk_window_move_resize (widget->window,			    allocation->x, allocation->y,			    allocation->width, allocation->height);  bin = GTK_BIN (widget);  if (bin->child)    {      child_allocation.x = (GTK_CONTAINER (widget)->border_width +			    widget->style->klass->xthickness);      child_allocation.y = GTK_CONTAINER (widget)->border_width;      child_allocation.width = allocation->width - child_allocation.x * 2;      child_allocation.height = allocation->height - child_allocation.y * 2;      gtk_widget_size_allocate (bin->child, &child_allocation);    }}static void gtk_list_item_style_set	(GtkWidget      *widget,			 GtkStyle       *previous_style){  g_return_if_fail (widget != NULL);  if (previous_style && GTK_WIDGET_REALIZED (widget))    gdk_window_set_background (widget->window, &widget->style->base[GTK_WIDGET_STATE (widget)]);}static voidgtk_list_item_draw (GtkWidget    *widget,		    GdkRectangle *area){  GtkBin *bin;  GdkRectangle child_area;  g_return_if_fail (widget != NULL);  g_return_if_fail (GTK_IS_LIST_ITEM (widget));  g_return_if_fail (area != NULL);  if (GTK_WIDGET_DRAWABLE (widget))    {      bin = GTK_BIN (widget);      if (widget->state == GTK_STATE_NORMAL)	{	  gdk_window_set_back_pixmap (widget->window, NULL, TRUE);	  gdk_window_clear_area (widget->window, area->x, area->y, area->width, area->height);	}      else	{	  gtk_paint_flat_box(widget->style, widget->window, 			     widget->state, GTK_SHADOW_ETCHED_OUT,			     area, widget, "listitem",			     0, 0, -1, -1);	      	}      if (bin->child && gtk_widget_intersect (bin->child, area, &child_area))	gtk_widget_draw (bin->child, &child_area);      if (GTK_WIDGET_HAS_FOCUS (widget))	{	  if (GTK_IS_LIST (widget->parent) && GTK_LIST (widget->parent)->add_mode)	    gtk_paint_focus (widget->style, widget->window,			     NULL, widget, "add-mode",			     0, 0,			     widget->allocation.width - 1,			     widget->allocation.height - 1);	  else	    gtk_paint_focus (widget->style, widget->window,			     NULL, widget, NULL,			     0, 0,			     widget->allocation.width - 1,			     widget->allocation.height - 1);	}    }}static voidgtk_list_item_draw_focus (GtkWidget *widget){  g_return_if_fail (widget != NULL);  g_return_if_fail (GTK_IS_LIST_ITEM (widget));    gtk_widget_draw(widget, NULL);}static gintgtk_list_item_button_press (GtkWidget      *widget,			    GdkEventButton *event){  g_return_val_if_fail (widget != NULL, FALSE);  g_return_val_if_fail (GTK_IS_LIST_ITEM (widget), FALSE);  g_return_val_if_fail (event != NULL, FALSE);  if (event->type == GDK_BUTTON_PRESS)    if (!GTK_WIDGET_HAS_FOCUS (widget))      gtk_widget_grab_focus (widget);  return FALSE;}static gintgtk_list_item_expose (GtkWidget      *widget,		      GdkEventExpose *event){  GtkBin *bin;  GdkEventExpose child_event;  g_return_val_if_fail (widget != NULL, FALSE);  g_return_val_if_fail (GTK_IS_LIST_ITEM (widget), FALSE);  g_return_val_if_fail (event != NULL, FALSE);  if (GTK_WIDGET_DRAWABLE (widget))    {      bin = GTK_BIN (widget);      if (!GTK_WIDGET_IS_SENSITIVE (widget))	gdk_window_set_background (widget->window, &widget->style->bg[GTK_STATE_INSENSITIVE]);      else if (widget->state == GTK_STATE_NORMAL)	gdk_window_set_background (widget->window, &widget->style->base[GTK_STATE_NORMAL]);      else	gdk_window_set_background (widget->window, &widget->style->bg[widget->state]);      gdk_window_clear_area (widget->window, event->area.x, event->area.y,			     event->area.width, event->area.height);      if (bin->child)	{	  child_event = *event;	  if (GTK_WIDGET_NO_WINDOW (bin->child) &&	      gtk_widget_intersect (bin->child, &event->area, &child_event.area))	    gtk_widget_event (bin->child, (GdkEvent*) &child_event);	}      gtk_widget_draw_focus (widget);    }  return FALSE;}static gintgtk_list_item_focus_in (GtkWidget     *widget,			GdkEventFocus *event){  g_return_val_if_fail (widget != NULL, FALSE);  g_return_val_if_fail (GTK_IS_LIST_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_list_item_focus_out (GtkWidget     *widget,			 GdkEventFocus *event){  g_return_val_if_fail (widget != NULL, FALSE);  g_return_val_if_fail (GTK_IS_LIST_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_list_item_select (GtkItem *item){  g_return_if_fail (item != NULL);  g_return_if_fail (GTK_IS_LIST_ITEM (item));  switch (GTK_WIDGET (item)->state)    {    case GTK_STATE_SELECTED:    case GTK_STATE_INSENSITIVE:      break;    default:      gtk_widget_set_state (GTK_WIDGET (item), GTK_STATE_SELECTED);      break;    }}static voidgtk_real_list_item_deselect (GtkItem *item){  g_return_if_fail (item != NULL);  g_return_if_fail (GTK_IS_LIST_ITEM (item));  if (GTK_WIDGET (item)->state == GTK_STATE_SELECTED)    gtk_widget_set_state (GTK_WIDGET (item), GTK_STATE_NORMAL);}static voidgtk_real_list_item_toggle (GtkItem *item){  g_return_if_fail (item != NULL);  g_return_if_fail (GTK_IS_LIST_ITEM (item));    switch (GTK_WIDGET (item)->state)    {    case GTK_STATE_SELECTED:      gtk_widget_set_state (GTK_WIDGET (item), GTK_STATE_NORMAL);      break;    case GTK_STATE_INSENSITIVE:      break;    default:      gtk_widget_set_state (GTK_WIDGET (item), GTK_STATE_SELECTED);      break;    }}

⌨️ 快捷键说明

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