Re: Tooltip in CList



David Robin <david robin st com> writes: 
> Has someone an idea on how to fix those drawbacks?
> 

Create a custom tooltip implementation, don't use GtkTooltips. 

An example from Metacity, ignore the "Display*" stuff:

static GtkWidget *tip = NULL;
static GtkWidget *label = NULL;

static gint
expose_handler (GtkTooltips *tooltips)
{
  gtk_paint_flat_box (tip->style, tip->window,
                      GTK_STATE_NORMAL, GTK_SHADOW_OUT, 
                      NULL, tip, "tooltip",
                      0, 0, -1, -1);

  return FALSE;
}

void
meta_fixed_tip_show (Display *xdisplay,
                     int root_x, int root_y,
                     const char *markup_text)
{
  if (tip == NULL)
    {
      tip = gtk_window_new (GTK_WINDOW_POPUP);
      gtk_widget_set_app_paintable (tip, TRUE);
      gtk_window_set_policy (GTK_WINDOW (tip), FALSE, FALSE, TRUE);
      gtk_widget_set_name (tip, "gtk-tooltips");
      gtk_container_set_border_width (GTK_CONTAINER (tip), 4);

      gtk_signal_connect_object (GTK_OBJECT (tip), 
                                 "expose_event",
                                 GTK_SIGNAL_FUNC (expose_handler),
                                 NULL);

      label = gtk_label_new (NULL);
      gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
      gtk_misc_set_alignment (GTK_MISC (label), 0.5, 0.5);
      gtk_widget_show (label);
      
      gtk_container_add (GTK_CONTAINER (tip), label);

      gtk_signal_connect (GTK_OBJECT (tip),
                          "destroy",
                          GTK_SIGNAL_FUNC (gtk_widget_destroyed),
                          &tip);
    }
  
  gtk_widget_set_uposition (tip, root_x, root_y);
  gtk_label_set_markup (GTK_LABEL (label), markup_text);

  gtk_widget_show (tip);
}

void
meta_fixed_tip_hide (void)
{
  if (tip)
    {
      gtk_widget_destroy (tip);
      tip = NULL;
    }
}






[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]