From: Jordi Albornoz Date: Sun, 5 Jan 2003 20:58:28 +0000 (+0000) Subject: From Dani Carbonell: dialog behaviour handling fixes and focus gmsginput just when... X-Git-Url: https://hydra-www.ietfng.org/gitweb/?a=commitdiff_plain;h=426199e8f68e2f196f99d558ced97fe33920b1ac;p=gtetrinet From Dani Carbonell: dialog behaviour handling fixes and focus gmsginput just when it needs to. Port gtk_window_set_policy to gtk_window_set_resizable. --- diff --git a/ChangeLog b/ChangeLog index 186fb8b..43fd4ce 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,19 @@ +2003-01-05 Dani Carbonell + + * TODO: updated. + + * src/dialogs.c (connectingdialog_new): fixed behaviour when opening + more than one window, now it presents the existing one. + (teamdialog_new):likewise. + (prefdialog_new):likewise. + + * src/tetrinet.c (tetrinet_key): we were giving focus to the gmsginput + even if there was no such input visible, now we only give focus if + gmsgstate == 1 (while writing message). + + * src/gtetrinet.c (main): gtk_window_set_policy is deprecated, + changed to gtk_window_set_resizable. + 2003-01-05 Jordi Mallach * Adapt patch from Jan Bretschneider with some UI improvements that diff --git a/TODO b/TODO index 72a7544..a79d42b 100644 --- a/TODO +++ b/TODO @@ -9,8 +9,6 @@ GTetrinet's TODO list + problem when typing composed letters (รก) in fields messages + add real tooltips + port deprecated widgets (-DGTK_DISABLE_DEPRECATED) - + pressing a key when a game is in progress, but you are not playing it, - causes a Gtk-CRITICAL + detaching and reattaching the Menu Bar causes two Bonobo-CRITICAL - Make gtetrinet resizeable (at least the fields messages bit) - Write a User Manual diff --git a/src/dialogs.c b/src/dialogs.c index 0130ee4..5801e10 100644 --- a/src/dialogs.c +++ b/src/dialogs.c @@ -74,7 +74,11 @@ gint connectingdialog_timeout (gpointer data) void connectingdialog_new (void) { - if (connectingdialog) return; + if (connectingdialog) + { + gtk_window_present (GTK_WINDOW (connectingdialog)); + return; + } connectingdialog = gnome_dialog_new (_("Connect to server"), GNOME_STOCK_BUTTON_CANCEL, NULL); @@ -125,7 +129,15 @@ void teamdialog_button (GnomeDialog *dialog, gint button, gpointer data) void teamdialog_new (void) { - GtkWidget *dialog, *table, *widget, *entry; + static GtkWidget *dialog; + GtkWidget *table, *widget, *entry; + + if (dialog) + { + gtk_window_present (GTK_WINDOW (dialog)); + return; + } + dialog = gnome_dialog_new (_("Change team"), GNOME_STOCK_BUTTON_OK, GNOME_STOCK_BUTTON_CANCEL, @@ -229,7 +241,11 @@ void connectdialog_new (void) GtkWidget *widget, *table1, *table2, *frame; gchar *aux; /* check if dialog is already displayed */ - if (connecting) return; + if (connectdialog) + { + gtk_window_present (GTK_WINDOW (connectdialog)); + return; + } connecting = TRUE; /* save some stuff */ @@ -394,7 +410,7 @@ gint key_dialog (char *msg) gtk_box_pack_start (GTK_BOX(GNOME_DIALOG(dialog)->vbox), label, TRUE, TRUE, GNOME_PAD_SMALL); gnome_dialog_set_close (GNOME_DIALOG(dialog), TRUE); - g_signal_connect (G_OBJECT(dialog), "key_press_event", + g_signal_connect (G_OBJECT(dialog), "key-press-event", GTK_SIGNAL_FUNC(key_dialog_callback), NULL); gtk_widget_set_events (dialog, GDK_KEY_PRESS_MASK); keydialog_key = 0; @@ -718,6 +734,12 @@ void prefdialog_new (void) GtkCellRenderer *renderer = gtk_cell_renderer_text_new (); GtkTreeSelection *theme_selection, *keys_selection; int i; + + if (prefdialog) + { + gtk_window_present (GTK_WINDOW (prefdialog)); + return; + } prefdialog = gnome_property_box_new(); diff --git a/src/fields.c b/src/fields.c index 4d7b981..002a446 100644 --- a/src/fields.c +++ b/src/fields.c @@ -311,7 +311,7 @@ GtkWidget *fields_page_contents (void) gmsginput = gtk_entry_new_with_max_length (128); gtk_widget_show (gmsginput); /* eat up key messages */ - g_signal_connect (G_OBJECT(gmsginput), "key_press_event", + g_signal_connect (G_OBJECT(gmsginput), "key-press-event", GTK_SIGNAL_FUNC(fields_eatkey), NULL); gtk_table_attach (GTK_TABLE(table2), gmsginput, 0, 1, 1, 2, GTK_FILL | GTK_EXPAND, 0, 0, 0); @@ -618,6 +618,6 @@ const char *fields_gmsginputtext (void) gint fields_eatkey (GtkWidget *widget, GdkEventKey *key) { - gtk_signal_emit_stop_by_name (GTK_OBJECT(widget), "key_press_event"); + gtk_signal_emit_stop_by_name (GTK_OBJECT(widget), "key-press-event"); return TRUE; } diff --git a/src/gtetrinet.c b/src/gtetrinet.c index 1d6ac5e..099611f 100644 --- a/src/gtetrinet.c +++ b/src/gtetrinet.c @@ -47,8 +47,8 @@ static GtkWidget *pixmapdata_label (char **d, char *str); static int gtetrinet_key (int keyval, int mod); -gint keypress (GtkWidget *widget, GdkEventKey *key); -gint keyrelease (GtkWidget *widget, GdkEventKey *key); +gint keypress (GtkWidget *widget, GdkEventKey *key, gpointer data); +gint keyrelease (GtkWidget *widget, GdkEventKey *key, gpointer data); static GtkWidget *app, *pfields, *pparty, *pwinlist; static GtkWidget *winlistwidget, *partywidget, *fieldswidget; @@ -154,13 +154,13 @@ int main (int argc, char *argv[]) g_signal_connect (G_OBJECT(app), "destroy", GTK_SIGNAL_FUNC(destroymain), NULL); - g_signal_connect (G_OBJECT(app), "key_press_event", + g_signal_connect (G_OBJECT(app), "key-press-event", GTK_SIGNAL_FUNC(keypress), NULL); - g_signal_connect (G_OBJECT(app), "key_release_event", + g_signal_connect (G_OBJECT(app), "key-release-event", GTK_SIGNAL_FUNC(keyrelease), NULL); gtk_widget_set_events (app, GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK); - gtk_window_set_policy (GTK_WINDOW(app), FALSE, FALSE, TRUE); + gtk_window_set_resizable (GTK_WINDOW (app), FALSE); /* create and set the window icon */ icon_pixbuf = gdk_pixbuf_new_from_file (PIXMAPSDIR "/gtetrinet.png", NULL); @@ -308,7 +308,7 @@ gint keytimeout (gpointer data) return FALSE; } -gint keypress (GtkWidget *widget, GdkEventKey *key) +gint keypress (GtkWidget *widget, GdkEventKey *key, gpointer data) { int game_area; @@ -352,7 +352,7 @@ gint keypress (GtkWidget *widget, GdkEventKey *key) return FALSE; } -gint keyrelease (GtkWidget *widget, GdkEventKey *key) +gint keyrelease (GtkWidget *widget, GdkEventKey *key, gpointer data) { int game_area; @@ -377,7 +377,7 @@ gint keyrelease (GtkWidget *widget, GdkEventKey *key) { k = *key; keytimeoutid = gtk_timeout_add (10, keytimeout, 0); - gtk_signal_emit_stop_by_name (GTK_OBJECT(widget), "key_release_event"); + gtk_signal_emit_stop_by_name (GTK_OBJECT(widget), "key-release-event"); return TRUE; } return FALSE; @@ -459,9 +459,9 @@ void move_current_page_to_window (void) gtk_container_set_border_width (GTK_CONTAINER (newWindow), 0); /* Attach key events to window */ - g_signal_connect (G_OBJECT(newWindow), "key_press_event", + g_signal_connect (G_OBJECT(newWindow), "key-press-event", GTK_SIGNAL_FUNC(keypress), NULL); - g_signal_connect (G_OBJECT(newWindow), "key_release_event", + g_signal_connect (G_OBJECT(newWindow), "key-release-event", GTK_SIGNAL_FUNC(keyrelease), NULL); gtk_widget_set_events (newWindow, GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK); gtk_window_set_policy (GTK_WINDOW(newWindow), FALSE, TRUE, FALSE); diff --git a/src/gtetrinet.h b/src/gtetrinet.h index 40e75d3..bf031dc 100644 --- a/src/gtetrinet.h +++ b/src/gtetrinet.h @@ -8,8 +8,8 @@ extern int gamemode; extern void destroymain (GtkWidget *widget, gpointer data); -extern gint keypress (GtkWidget *widget, GdkEventKey *key); -extern gint keyrelease (GtkWidget *widget, GdkEventKey *key); +extern gint keypress (GtkWidget *widget, GdkEventKey *key, gpointer data); +extern gint keyrelease (GtkWidget *widget, GdkEventKey *key, gpointer data); extern void move_current_page_to_window (void); extern void show_fields_page (void); extern void show_partyline_page (void); diff --git a/src/partyline.c b/src/partyline.c index 00d266f..4d9fbf1 100644 --- a/src/partyline.c +++ b/src/partyline.c @@ -76,7 +76,7 @@ GtkWidget *partyline_page_new (void) entrybox = gtk_entry_new_with_max_length (200); g_signal_connect (G_OBJECT(entrybox), "activate", GTK_SIGNAL_FUNC(textentry), NULL); - g_signal_connect (G_OBJECT(entrybox), "key_press_event", + g_signal_connect (G_OBJECT(entrybox), "key-press-event", GTK_SIGNAL_FUNC(entrykey), NULL); gtk_widget_show (entrybox); gtk_box_pack_start (GTK_BOX(leftbox), entrybox, FALSE, FALSE, 0); @@ -315,7 +315,7 @@ static gint entrykey (GtkWidget *widget, GdkEventKey *key) printf ("history: %d %d %d %s\n", plh_start, plh_end, plh_cur, plhistory[plh_cur]); #endif - gtk_signal_emit_stop_by_name (GTK_OBJECT(widget), "key_press_event"); + gtk_signal_emit_stop_by_name (GTK_OBJECT(widget), "key-press-event"); return TRUE; } else if (keyval == GDK_Left || keyval == GDK_Right) { diff --git a/src/tetrinet.c b/src/tetrinet.c index 909bbc8..15840ef 100644 --- a/src/tetrinet.c +++ b/src/tetrinet.c @@ -1511,9 +1511,9 @@ int tetrinet_key (int keyval, char *str) } notfieldkey: if (!ingame) return FALSE; - fields_gmsginputactivate (TRUE); /* gmsg keys */ if (gmsgstate == 1) { + fields_gmsginputactivate (TRUE); switch (keyval) { case GDK_Return: {