+ grab_keys(FALSE);
+ curpos = newpos;
+ grab_keys(TRUE);
+
+ if (curpos != NULL) {
+ gchar *text = NULL;
+ GList *it;
+ Rect *a;
+
+ for (it = curpos->keylist; it; it = g_list_next(it)) {
+ gchar *oldtext = text;
+ if (text == NULL)
+ text = g_strdup(it->data);
+ else
+ text = g_strconcat(text, " - ", it->data, NULL);
+ g_free(oldtext);
+ }
+
+ a = screen_physical_area_monitor_active();
+ popup_position(popup, NorthWestGravity, a->x + 10, a->y + 10);
+ /* 1 second delay for the popup to show */
+ popup_delay_show(popup, G_USEC_PER_SEC, text);
+ g_free(text);
+ } else {
+ popup_hide(popup);
+ }