tSet window manager hints and centre-on-parent behaviour for dialog windows, so that, e.g., dopewars plays nicely with window managers that do not automatically centre transients (e.g. Metacity). - vaccinewars - be a doctor and try to vaccinate the world
 (HTM) git clone git://src.adamsgaard.dk/vaccinewars
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit cffdcf8e46ce98b2fd738862f03cae7318a31268
 (DIR) parent bf68d6713ceb7e4139d5e39af0ff7719a00645f1
 (HTM) Author: Ben Webb <ben@salilab.org>
       Date:   Mon,  7 Oct 2002 10:52:52 +0000
       
       Set window manager hints and centre-on-parent behaviour for dialog windows,
       so that, e.g., dopewars plays nicely with window managers that do not
       automatically centre transients (e.g. Metacity).
       
       
       Diffstat:
         M src/gui_client/gtk_client.c         |      25 +++++++++++++++++++++++++
         M src/gui_client/newgamedia.c         |       3 +++
         M src/gui_client/optdialog.c          |       1 +
       
       3 files changed, 29 insertions(+), 0 deletions(-)
       ---
 (DIR) diff --git a/src/gui_client/gtk_client.c b/src/gui_client/gtk_client.c
       t@@ -212,6 +212,17 @@ GtkWidget *my_hbbox_new(void)
          return hbbox;
        }
        
       +/*
       + * Sets the initial size and window manager hints of a dialog.
       + */
       +void my_set_dialog_position(GtkWindow *dialog)
       +{
       +#ifdef HAVE_GLIB2
       +  gtk_window_set_type_hint(dialog, GDK_WINDOW_TYPE_HINT_DIALOG);
       +  gtk_window_set_position(dialog, GTK_WIN_POS_CENTER_ON_PARENT);
       +#endif
       +}
       +
        void QuitGame(GtkWidget *widget, gpointer data)
        {
          if (!InGame || GtkMessageBox(ClientData.window,
       t@@ -306,6 +317,7 @@ void ListInventory(GtkWidget *widget, gpointer data)
        
          /* Title of inventory window */
          gtk_window_set_title(GTK_WINDOW(window), _("Inventory"));
       +  my_set_dialog_position(GTK_WINDOW(window));
        
          SetShowing(window, &IsShowingInventory);
        
       t@@ -603,6 +615,7 @@ void PrepareHighScoreDialog(void)
        
          /* Title of the GTK+ high score dialog */
          gtk_window_set_title(GTK_WINDOW(dialog), _("High Scores"));
       +  my_set_dialog_position(GTK_WINDOW(dialog));
        
          gtk_container_set_border_width(GTK_CONTAINER(dialog), 7);
          gtk_window_set_modal(GTK_WINDOW(dialog), TRUE);
       t@@ -891,6 +904,7 @@ static void CreateFightDialog(void)
          accel_group = gtk_accel_group_new();
          gtk_window_add_accel_group(GTK_WINDOW(dialog), accel_group);
          gtk_window_set_title(GTK_WINDOW(dialog), _("Fight"));
       +  my_set_dialog_position(GTK_WINDOW(dialog));
          gtk_container_set_border_width(GTK_CONTAINER(dialog), 7);
        
          gtk_window_set_modal(GTK_WINDOW(dialog), TRUE);
       t@@ -1424,6 +1438,7 @@ void Jet(GtkWidget *parent)
          dialog = gtk_window_new(GTK_WINDOW_TOPLEVEL);
          /* Title of 'Jet' dialog */
          gtk_window_set_title(GTK_WINDOW(dialog), _("Jet to location"));
       +  my_set_dialog_position(GTK_WINDOW(dialog));
        
          gtk_container_set_border_width(GTK_CONTAINER(dialog), 7);
          gtk_window_add_accel_group(GTK_WINDOW(dialog), accel_group);
       t@@ -1644,6 +1659,7 @@ void DealDrugs(GtkWidget *widget, gpointer data)
        
          dialog = DealDialog.dialog = gtk_window_new(GTK_WINDOW_TOPLEVEL);
          gtk_window_set_title(GTK_WINDOW(dialog), Action);
       +  my_set_dialog_position(GTK_WINDOW(dialog));
          gtk_window_add_accel_group(GTK_WINDOW(dialog), accel_group);
          gtk_container_set_border_width(GTK_CONTAINER(dialog), 7);
          gtk_window_set_modal(GTK_WINDOW(dialog), TRUE);
       t@@ -1870,6 +1886,7 @@ void QuestionDialog(char *Data, Player *From)
        
          /* Title of the 'ask player a question' dialog */
          gtk_window_set_title(GTK_WINDOW(dialog), _("Question"));
       +  my_set_dialog_position(GTK_WINDOW(dialog));
        
          gtk_window_add_accel_group(GTK_WINDOW(dialog), accel_group);
          gtk_container_set_border_width(GTK_CONTAINER(dialog), 7);
       t@@ -2361,6 +2378,7 @@ void display_intro(GtkWidget *widget, gpointer data)
        
          /* Title of GTK+ 'about' dialog */
          gtk_window_set_title(GTK_WINDOW(dialog), _("About dopewars"));
       +  my_set_dialog_position(GTK_WINDOW(dialog));
        
          gtk_window_set_modal(GTK_WINDOW(dialog), TRUE);
          gtk_window_set_transient_for(GTK_WINDOW(dialog),
       t@@ -2530,6 +2548,7 @@ void TransferDialog(gboolean Debt)
                               Names.BankName);
          }
          gtk_window_set_title(GTK_WINDOW(dialog), text->str);
       +  my_set_dialog_position(GTK_WINDOW(dialog));
          gtk_container_set_border_width(GTK_CONTAINER(dialog), 7);
          gtk_window_set_modal(GTK_WINDOW(dialog), TRUE);
          gtk_window_set_transient_for(GTK_WINDOW(dialog),
       t@@ -2631,6 +2650,7 @@ void ListPlayers(GtkWidget *widget, gpointer data)
        
          /* Title of player list dialog */
          gtk_window_set_title(GTK_WINDOW(dialog), _("Player List"));
       +  my_set_dialog_position(GTK_WINDOW(dialog));
        
          gtk_window_set_default_size(GTK_WINDOW(dialog), 200, 180);
          gtk_container_set_border_width(GTK_CONTAINER(dialog), 7);
       t@@ -2732,6 +2752,7 @@ void TalkDialog(gboolean TalkToAll)
        
          /* Title of talk dialog */
          gtk_window_set_title(GTK_WINDOW(dialog), _("Talk to player(s)"));
       +  my_set_dialog_position(GTK_WINDOW(dialog));
        
          gtk_window_set_default_size(GTK_WINDOW(dialog), 200, 190);
          gtk_container_set_border_width(GTK_CONTAINER(dialog), 7);
       t@@ -2910,6 +2931,7 @@ void ErrandDialog(gint ErrandType)
            label = gtk_label_new(text);
            g_free(text);
          }
       +  my_set_dialog_position(GTK_WINDOW(dialog));
        
          gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
        
       t@@ -3101,6 +3123,7 @@ void NewNameDialog(void)
        
          /* Title of dialog for changing a player's name */
          gtk_window_set_title(GTK_WINDOW(window), _("Change Name"));
       +  my_set_dialog_position(GTK_WINDOW(window));
        
          gtk_window_set_modal(GTK_WINDOW(window), TRUE);
          gtk_window_set_transient_for(GTK_WINDOW(window),
       t@@ -3160,6 +3183,7 @@ void GunShopDialog(void)
          text = dpg_strdup_printf(_("%/GTK GunShop window title/%Tde"),
                                   Names.GunShopName);
          gtk_window_set_title(GTK_WINDOW(window), text);
       +  my_set_dialog_position(GTK_WINDOW(window));
          g_free(text);
          gtk_window_set_modal(GTK_WINDOW(window), TRUE);
          gtk_window_set_transient_for(GTK_WINDOW(window),
       t@@ -3222,6 +3246,7 @@ static void CreateSpyReports(void)
        
          /* Title of window to display reports from spies with other players */
          gtk_window_set_title(GTK_WINDOW(window), _("Spy reports"));
       +  my_set_dialog_position(GTK_WINDOW(window));
        
          gtk_window_set_modal(GTK_WINDOW(window), TRUE);
          gtk_window_set_transient_for(GTK_WINDOW(window),
 (DIR) diff --git a/src/gui_client/newgamedia.c b/src/gui_client/newgamedia.c
       t@@ -485,6 +485,7 @@ void NewGameDialog(Player *play)
        
          /* Title of 'New Game' dialog */
          gtk_window_set_title(GTK_WINDOW(dialog), _("New Game"));
       +  my_set_dialog_position(GTK_WINDOW(dialog));
          gtk_container_set_border_width(GTK_CONTAINER(dialog), 7);
          gtk_window_add_accel_group(GTK_WINDOW(dialog), accel_group);
        
       t@@ -718,6 +719,7 @@ void AuthDialog(HttpConnection *conn, gboolean proxy, gchar *realm,
            /* Title of dialog for authenticating with a web server */
            gtk_window_set_title(GTK_WINDOW(window), _("Authentication Required"));
          }
       +  my_set_dialog_position(GTK_WINDOW(window));
        
          gtk_window_set_modal(GTK_WINDOW(window), TRUE);
          gtk_window_set_transient_for(GTK_WINDOW(window),
       t@@ -832,6 +834,7 @@ static void RealSocksAuthDialog(NetworkBuffer *netbuf, gboolean meta,
          /* Title of dialog for authenticating with a SOCKS server */
          gtk_window_set_title(GTK_WINDOW(window),
                               _("SOCKS Authentication Required"));
       +  my_set_dialog_position(GTK_WINDOW(window));
        
          gtk_window_set_modal(GTK_WINDOW(window), TRUE);
          gtk_window_set_transient_for(GTK_WINDOW(window),
 (DIR) diff --git a/src/gui_client/optdialog.c b/src/gui_client/optdialog.c
       t@@ -760,6 +760,7 @@ void OptDialog(GtkWidget *widget, gpointer data)
          gtk_window_add_accel_group(GTK_WINDOW(dialog), accel_group);
        
          gtk_window_set_title(GTK_WINDOW(dialog), _("Options"));
       +  my_set_dialog_position(GTK_WINDOW(dialog));
          gtk_container_set_border_width(GTK_CONTAINER(dialog), 7);
          gtk_window_set_modal(GTK_WINDOW(dialog), TRUE);