--- libs/gcugtk/gcuperiodic.c.bak 2017-05-06 03:20:48.976428546 +0200
+++ libs/gcugtk/gcuperiodic.c 2017-05-06 03:39:25.031950707 +0200
@@ -410,6 +410,36 @@
return GCU_PERIODIC_COLOR_MAX + periodic->nbschemes++;
}
+gboolean
+gcu_periodic_query_tooltip (
+ GtkWidget *widget,
+ gint x,
+ gint y,
+ gboolean keyboard_mode,
+ GtkTooltip *tooltip,
+ gint *user_data)
+{
+ GtkWidget *w;
+ const gchar *conf, *name, *str;
+ gchar *markup;
+ int Z;
+
+ name = gtk_buildable_get_name (GTK_BUILDABLE (widget));
+ Z = atoi (name + 3);
+ str = gcu_element_get_weight_as_string (Z);
+ conf = gcu_element_get_electronic_configuration (Z);
+ markup = g_strdup_printf ("%u\n%s\n%s\n%s\n%s",
+ Z, gcu_element_get_symbol (Z), gcu_element_get_name (Z), (conf)? conf: "", (str)? str: "");
+
+ w = gtk_label_new (NULL);
+ gtk_label_set_justify (GTK_LABEL (w), GTK_JUSTIFY_CENTER);
+ gtk_label_set_markup (GTK_LABEL (w), markup);
+ gtk_tooltip_set_custom (tooltip, w);
+
+ g_free (markup);
+ return TRUE;
+}
+
void gcu_periodic_set_tips (GcuPeriodic *periodic, unsigned scheme)
{
if (scheme != periodic->tips) {
@@ -425,31 +455,10 @@
break;
case GCU_PERIODIC_TIP_STANDARD:
for (i = 1; i <= 118; i++) {
- GtkWidget *win, *grid, *w;
- char *markup, *str;
- char const *conf;
if (!periodic->buttons[i])
continue;
- win = gtk_window_new (GTK_WINDOW_POPUP);
- gtk_widget_set_name (win, "gtk-tooltip");
- grid = gtk_grid_new ();
- gtk_container_add (GTK_CONTAINER (win), grid);
- w = GTK_WIDGET (g_object_new (GTK_TYPE_LABEL, "xalign", 0., NULL));
- markup = g_strdup_printf ("%u", i);
- gtk_label_set_text (GTK_LABEL (w), markup);
- g_free (markup);
- gtk_grid_attach (GTK_GRID (grid), w, 0, 0, 1, 1);
- str = gcu_element_get_weight_as_string (i);
- conf = gcu_element_get_electronic_configuration (i);
- w = GTK_WIDGET (g_object_new (GTK_TYPE_LABEL, "justify", GTK_JUSTIFY_CENTER, NULL));
- markup = g_strdup_printf ("%s\n%s\n%s\n%s",
- gcu_element_get_symbol (i), gcu_element_get_name (i), (conf)? conf: "", (str)? str: "");
- g_free (str);
- gtk_label_set_markup (GTK_LABEL (w), markup);
- g_free (markup);
- gtk_grid_attach (GTK_GRID (grid), w, 0, 1, 1, 1);
- gtk_widget_show_all (grid);
- gtk_widget_set_tooltip_window (GTK_WIDGET (periodic->buttons[i]), GTK_WINDOW (win));
+ g_object_set (G_OBJECT (periodic->buttons[i]), "has-tooltip", TRUE, NULL);
+ g_signal_connect (periodic->buttons[i], "query-tooltip", G_CALLBACK (gcu_periodic_query_tooltip), NULL);
}
break;
}