示例#1
0
static void
place_windows (GtkIconEntry *icon_entry, GtkAllocation *widget_alloc)
{
  GtkIconEntryPosition left_icon_pos;
  GtkIconEntryPosition right_icon_pos;
  GtkAllocation left_icon_alloc;
  GtkAllocation right_icon_alloc;
  GtkAllocation text_area_alloc;
  GtkIconEntryPrivate *priv;
  gint y;

  priv = GTK_ICON_ENTRY_GET_PRIVATE (icon_entry);

  get_text_area_size (icon_entry, &text_area_alloc);
  
  /* DJW center text/icon
   * TODO flicker needs to be eliminated
   */
  gdk_window_get_geometry (GTK_ENTRY (icon_entry)->text_area, NULL, &y, NULL, NULL, NULL);
  text_area_alloc.y = y;

  get_icon_allocation (icon_entry, TRUE, widget_alloc, &text_area_alloc,
		       &left_icon_alloc, &left_icon_pos);
  get_icon_allocation (icon_entry, FALSE, widget_alloc, &text_area_alloc,
		       &right_icon_alloc, &right_icon_pos);

  if (left_icon_alloc.width > 0)
    {
      text_area_alloc.x = left_icon_alloc.x + left_icon_alloc.width + ICON_MARGIN;
    }

  if (right_icon_alloc.width > 0)
    {
      text_area_alloc.width -= right_icon_alloc.width + ICON_MARGIN;
    }

  text_area_alloc.width -= text_area_alloc.x;

  gdk_window_move_resize (priv->icons[left_icon_pos].window,
			  left_icon_alloc.x, left_icon_alloc.y,
			  left_icon_alloc.width, left_icon_alloc.height);

  gdk_window_move_resize (priv->icons[right_icon_pos].window,
			  right_icon_alloc.x, right_icon_alloc.y,
			  right_icon_alloc.width, right_icon_alloc.height);

  gdk_window_move_resize (GTK_ENTRY (icon_entry)->text_area,
			  text_area_alloc.x, text_area_alloc.y,
			  text_area_alloc.width, text_area_alloc.height);
}
示例#2
0
static void
place_windows(SexyIconEntry *icon_entry, GtkAllocation *widget_alloc)
{
	SexyIconEntryPosition left_icon_pos;
	SexyIconEntryPosition right_icon_pos;
	GtkAllocation left_icon_alloc;
	GtkAllocation right_icon_alloc;
	GtkAllocation text_area_alloc;

	get_text_area_size(icon_entry, &text_area_alloc);
	get_icon_allocation(icon_entry, TRUE, widget_alloc, &text_area_alloc,
						&left_icon_alloc, &left_icon_pos);
	get_icon_allocation(icon_entry, FALSE, widget_alloc, &text_area_alloc,
						&right_icon_alloc, &right_icon_pos);

	if (left_icon_alloc.width > 0)
	{
		text_area_alloc.x = left_icon_alloc.x + left_icon_alloc.width +
		                    ICON_MARGIN;
	}

	if (right_icon_alloc.width > 0)
		text_area_alloc.width -= right_icon_alloc.width + ICON_MARGIN;

	text_area_alloc.width -= text_area_alloc.x;

	gdk_window_move_resize(icon_entry->priv->icons[left_icon_pos].window,
						   left_icon_alloc.x, left_icon_alloc.y,
						   left_icon_alloc.width, left_icon_alloc.height);

	gdk_window_move_resize(icon_entry->priv->icons[right_icon_pos].window,
						   right_icon_alloc.x, right_icon_alloc.y,
						   right_icon_alloc.width, right_icon_alloc.height);

	gdk_window_move_resize(GTK_ENTRY(icon_entry)->text_area,
						   text_area_alloc.x, text_area_alloc.y,
						   text_area_alloc.width, text_area_alloc.height);
}