All pastes #1212755 Raw Edit

proposed password entry; buggy

public c v1 · immutable
#1212755 ·published 2008-09-28 13:03 UTC
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;}