rendered paste body#include <gtk/gtk.h>#include <stdint.h>#include <string.h>GtkWidget * entry;GdkColor color;void on_window_destroy(GtkWidget *widget, gpointer data){ gtk_main_quit();}void on_entry_focus_in(GtkWidget *widget, gpointer data){ gtk_entry_set_text(GTK_ENTRY(entry), ""); gtk_entry_set_visibility(GTK_ENTRY(entry), FALSE); gtk_widget_modify_text(entry, GTK_STATE_NORMAL, NULL);}void on_entry_focus_out(GtkWidget *widget, gpointer data){ if (gtk_entry_get_text(GTK_ENTRY(entry))[0]!=0) gtk_entry_set_text(GTK_ENTRY(entry), "Change password"); else gtk_entry_set_text(GTK_ENTRY(entry), "Enter new password"); gtk_widget_modify_text(entry, GTK_STATE_NORMAL, &color); gtk_entry_set_visibility(GTK_ENTRY(entry), TRUE);}int main(int argc, char *argv[]){ GtkWidget * window; GtkWidget * vbox; GtkStyle * style; GdkColor color; gtk_init(&argc, &argv); window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(window), "Password entry test"); gtk_window_set_default_size (GTK_WINDOW (window), 80, 30); g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(on_window_destroy), NULL); vbox = gtk_vbox_new(2, FALSE); entry = gtk_entry_new(); gtk_entry_set_text(GTK_ENTRY(entry), "user"); gtk_container_add(GTK_CONTAINER(vbox), entry); entry = gtk_entry_new(); style = gtk_widget_get_style(entry); memcpy(&color, &(style->text[GTK_STATE_INSENSITIVE]), sizeof(GdkColor)); gtk_widget_modify_text(entry, GTK_STATE_NORMAL, &color); gtk_entry_set_text(GTK_ENTRY(entry), "Enter new password"); g_signal_connect(G_OBJECT(entry), "focus-in-event", G_CALLBACK(on_entry_focus_in), NULL); g_signal_connect(G_OBJECT(entry), "focus-out-event", G_CALLBACK(on_entry_focus_out), NULL); gtk_container_add(GTK_CONTAINER(vbox), entry); gtk_container_add(GTK_CONTAINER(window), vbox); gtk_widget_show_all(window); gtk_main(); return 0;}