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

📄 gtkpaned.c

📁 gtk是linux一款强大的夸平台的图形化开发工具
💻 C
📖 第 1 页 / 共 2 页
字号:
}static gintgtk_paned_expose (GtkWidget      *widget,		  GdkEventExpose *event){  GtkPaned *paned;  GdkEventExpose child_event;    g_return_val_if_fail (widget != NULL, FALSE);  g_return_val_if_fail (GTK_IS_PANED (widget), FALSE);  g_return_val_if_fail (event != NULL, FALSE);    if (GTK_WIDGET_DRAWABLE (widget))    {      paned = GTK_PANED (widget);            /* An expose event for the handle */      if (event->window == paned->handle)	{	   gtk_paint_box (widget->style, paned->handle,			  GTK_WIDGET_STATE(widget),			  GTK_SHADOW_OUT, 			  &event->area, widget, "paned",			  0, 0,			  paned->handle_size, paned->handle_size);	}      else	{	  child_event = *event;	  if (paned->child1 &&	      GTK_WIDGET_NO_WINDOW (paned->child1) &&	      gtk_widget_intersect (paned->child1, &event->area, &child_event.area))	    gtk_widget_event (paned->child1, (GdkEvent*) &child_event);	  	  if (paned->child2 &&	      GTK_WIDGET_NO_WINDOW (paned->child2) &&	      gtk_widget_intersect (paned->child2, &event->area, &child_event.area))	    gtk_widget_event (paned->child2, (GdkEvent*) &child_event);	  	  /* redraw the groove if necessary */	  if (gdk_rectangle_intersect (&paned->groove_rectangle, 				       &event->area, 				       &child_event.area))	    gtk_widget_draw (widget, &child_event.area);	}    }  return FALSE;}voidgtk_paned_add1 (GtkPaned     *paned,		GtkWidget    *widget){  gtk_paned_pack1 (paned, widget, FALSE, TRUE);}voidgtk_paned_add2 (GtkPaned  *paned,		GtkWidget *widget){  gtk_paned_pack2 (paned, widget, TRUE, TRUE);}voidgtk_paned_pack1 (GtkPaned     *paned,		 GtkWidget    *child,		 gboolean      resize,		 gboolean      shrink){  g_return_if_fail (paned != NULL);  g_return_if_fail (GTK_IS_PANED (paned));  g_return_if_fail (GTK_IS_WIDGET (child));    if (!paned->child1)    {      paned->child1 = child;      paned->child1_resize = resize;      paned->child1_shrink = shrink;      gtk_widget_set_parent (child, GTK_WIDGET (paned));      if (GTK_WIDGET_REALIZED (child->parent))	gtk_widget_realize (child);      if (GTK_WIDGET_VISIBLE (child->parent) && GTK_WIDGET_VISIBLE (child))	{	  if (GTK_WIDGET_MAPPED (child->parent))	    gtk_widget_map (child);	  gtk_widget_queue_resize (child);	}    }}voidgtk_paned_pack2 (GtkPaned  *paned,		 GtkWidget *child,		 gboolean   resize,		 gboolean   shrink){  g_return_if_fail (paned != NULL);  g_return_if_fail (GTK_IS_PANED (paned));  g_return_if_fail (GTK_IS_WIDGET (child));    if (!paned->child2)    {      paned->child2 = child;      paned->child2_resize = resize;      paned->child2_shrink = shrink;            gtk_widget_set_parent (child, GTK_WIDGET (paned));      if (GTK_WIDGET_REALIZED (child->parent))	gtk_widget_realize (child);      if (GTK_WIDGET_VISIBLE (child->parent) && GTK_WIDGET_VISIBLE (child))	{	  if (GTK_WIDGET_MAPPED (child->parent))	    gtk_widget_map (child);	  gtk_widget_queue_resize (child);	}    }}static voidgtk_paned_add (GtkContainer *container,	       GtkWidget    *widget){  GtkPaned *paned;    g_return_if_fail (container != NULL);  g_return_if_fail (GTK_IS_PANED (container));  g_return_if_fail (widget != NULL);    paned = GTK_PANED (container);    if (!paned->child1)    gtk_paned_add1 (GTK_PANED (container),widget);  else if (!paned->child2)    gtk_paned_add2 (GTK_PANED (container),widget);}static voidgtk_paned_remove (GtkContainer *container,		  GtkWidget    *widget){  GtkPaned *paned;  gboolean was_visible;    g_return_if_fail (container != NULL);  g_return_if_fail (GTK_IS_PANED (container));  g_return_if_fail (widget != NULL);    paned = GTK_PANED (container);  was_visible = GTK_WIDGET_VISIBLE (widget);    if (paned->child1 == widget)    {      gtk_widget_unparent (widget);            paned->child1 = NULL;            if (was_visible && GTK_WIDGET_VISIBLE (container))        gtk_widget_queue_resize (GTK_WIDGET (container));    }  else if (paned->child2 == widget)    {      gtk_widget_unparent (widget);            paned->child2 = NULL;            if (was_visible && GTK_WIDGET_VISIBLE (container))        gtk_widget_queue_resize (GTK_WIDGET (container));    }}static voidgtk_paned_forall (GtkContainer *container,		  gboolean	include_internals,		  GtkCallback   callback,		  gpointer      callback_data){  GtkPaned *paned;    g_return_if_fail (container != NULL);  g_return_if_fail (GTK_IS_PANED (container));  g_return_if_fail (callback != NULL);    paned = GTK_PANED (container);    if (paned->child1)    (* callback) (paned->child1, callback_data);  if (paned->child2)    (* callback) (paned->child2, callback_data);}voidgtk_paned_set_position    (GtkPaned  *paned,			   gint       position){  g_return_if_fail (paned != NULL);  g_return_if_fail (GTK_IS_PANED (paned));  if (position >= 0)    {      /* We don't clamp here - the assumption is that       * if the total allocation changes at the same time       * as the position, the position set is with reference       * to the new total size. If only the position changes,       * then clamping will occur in gtk_paned_compute_position()       */      paned->child1_size = position;      paned->position_set = TRUE;    }  else    paned->position_set = FALSE;  gtk_widget_queue_resize (GTK_WIDGET (paned));}voidgtk_paned_set_handle_size (GtkPaned *paned,			   guint16   size){  gint x,y;    g_return_if_fail (paned != NULL);  g_return_if_fail (GTK_IS_PANED (paned));  if (paned->handle)    {      gdk_window_get_geometry (paned->handle, &x, &y, NULL, NULL, NULL);      gdk_window_move_resize (paned->handle,                              x + paned->handle_size / 2 - size / 2,                              y + paned->handle_size / 2 - size / 2,                              size, size);    }  paned->handle_size = size;}voidgtk_paned_set_gutter_size (GtkPaned *paned,			   guint16   size){  g_return_if_fail (paned != NULL);  g_return_if_fail (GTK_IS_PANED (paned));  paned->gutter_size = size;    if (GTK_WIDGET_VISIBLE (GTK_WIDGET (paned)))    gtk_widget_queue_resize (GTK_WIDGET (paned));}voidgtk_paned_compute_position (GtkPaned *paned,			    gint      allocation,			    gint      child1_req,			    gint      child2_req){  g_return_if_fail (paned != NULL);  g_return_if_fail (GTK_IS_PANED (paned));  paned->min_position = paned->child1_shrink ? 0 : child1_req;  paned->max_position = allocation;  if (!paned->child2_shrink)    paned->max_position -= child2_req;  if (!paned->position_set)    {      if (paned->child1_resize && !paned->child2_resize)	paned->child1_size = allocation - child2_req;      else if (!paned->child1_resize && paned->child2_resize)	paned->child1_size = child1_req;      else	paned->child1_size = allocation * ((gdouble)child1_req / (child1_req + child2_req));    }  else    {      /* If the position was set before the initial allocation.       * (paned->last_allocation < 0) just clamp it and leave it.       */      if (paned->last_allocation >= 0)	{	  if (paned->child1_resize && !paned->child2_resize)	    paned->child1_size += (allocation - paned->last_allocation);	  else if (!(!paned->child1_resize && paned->child2_resize))	    paned->child1_size = allocation * ((gdouble)paned->child1_size / (paned->last_allocation));	}    }  paned->child1_size = CLAMP (paned->child1_size,			      paned->min_position,			      paned->max_position);  paned->last_allocation = allocation;  }

⌨️ 快捷键说明

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