public CellTooltipWindow (TreeView tree, TreeViewColumn col, TreePath path) { this.tree = tree; this.col = col; NudgeHorizontal = true; Events |= Gdk.EventMask.ButtonPressMask | Gdk.EventMask.ButtonReleaseMask | Gdk.EventMask.EnterNotifyMask | Gdk.EventMask.LeaveNotifyMask; Gdk.Rectangle rect = tree.GetCellArea (path, col); rect.Inflate (2, 2); if (!tree.Model.GetIter (out iter, path)) { Hide (); return; } col.CellSetCellData (tree.Model, iter, false, false); int x = 0; int th = 0; CellRenderer[] renderers = col.CellRenderers; foreach (CellRenderer cr in renderers) { int sp, wi, he, xo, yo; col.CellGetPosition (cr, out sp, out wi); Gdk.Rectangle crect = new Gdk.Rectangle (x, rect.Y, wi, rect.Height); cr.GetSize (tree, ref crect, out xo, out yo, out wi, out he); if (cr != renderers [renderers.Length - 1]) x += crect.Width + col.Spacing + 1; else x += wi + 1; if (he > th) th = he; } SetSizeRequest (x, th + 2); }