tFix compile errors with Win32 GTK+ implementation - 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 112bdb7551b937475088691c071a7e034fa1414f
 (DIR) parent fbddb9bf7cb2e0023beed6039895844347737e7b
 (HTM) Author: Ben Webb <ben@salilab.org>
       Date:   Fri, 27 Nov 2020 23:11:44 -0800
       
       Fix compile errors with Win32 GTK+ implementation
       
       Diffstat:
         M src/gtkport/gtkport.c               |      41 ++++++++++++++-----------------
         M src/gtkport/gtkport.h               |      13 +++++++++++--
         M src/gtkport/treeview.c              |      96 ++++++++++++++++++++++++++++---
         M src/gtkport/treeview.h              |      34 +++++++++++++++++++++++++++++--
         M src/gui_client/newgamedia.c         |       3 ++-
         M src/serverside.c                    |       4 ++--
       
       6 files changed, 152 insertions(+), 39 deletions(-)
       ---
 (DIR) diff --git a/src/gtkport/gtkport.c b/src/gtkport/gtkport.c
       t@@ -234,8 +234,6 @@ static void gtk_window_set_initial_position(GtkWindow *window,
        static void gtk_progress_bar_size_request(GtkWidget *widget,
                                                  GtkRequisition *requisition);
        static void gtk_progress_bar_realize(GtkWidget *widget);
       -static gint gtk_accel_group_add(GtkAccelGroup *accel_group,
       -                                ACCEL *newaccel);
        static void gtk_accel_group_set_id(GtkAccelGroup *accel_group, gint ind,
                                           gint ID);
        static void EnableParent(GtkWindow *window);
       t@@ -1070,8 +1068,8 @@ static BOOL HandleWinMessage(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam,
            }
        
            if (widget && nmhdr->code == TCN_SELCHANGE) {
       -      gtk_notebook_set_page(GTK_NOTEBOOK(widget),
       -                            TabCtrl_GetCurSel(nmhdr->hwndFrom));
       +      gtk_notebook_set_current_page(GTK_NOTEBOOK(widget),
       +                                    TabCtrl_GetCurSel(nmhdr->hwndFrom));
              return FALSE;
            }
            break;
       t@@ -3708,12 +3706,23 @@ GtkWidget *gtk_menu_item_new_with_label(const gchar *label)
          return GTK_WIDGET(menu_item);
        }
        
       +void gtk_menu_item_set_right_justified(GtkMenuItem *menu_item,
       +                                       gboolean right_justified)
       +{
       +  /* noop */
       +}
       +
        void gtk_menu_item_set_submenu(GtkMenuItem *menu_item, GtkWidget *submenu)
        {
          menu_item->submenu = GTK_MENU(submenu);
          submenu->parent = GTK_WIDGET(menu_item);
        }
        
       +GtkMenu *gtk_menu_item_get_submenu(GtkMenuItem *menu_item)
       +{
       +  return menu_item->submenu;
       +}
       +
        gboolean gtk_check_menu_item_get_active(GtkMenuItem *menu_item)
        {
          return menu_item->active;
       t@@ -3922,7 +3931,7 @@ void gtk_notebook_insert_page(GtkNotebook *notebook, GtkWidget *child,
          child->parent = GTK_WIDGET(notebook);
        }
        
       -void gtk_notebook_set_page(GtkNotebook *notebook, gint page_num)
       +void gtk_notebook_set_current_page(GtkNotebook *notebook, gint page_num)
        {
          GSList *children;
          GtkNotebookChild *note_child;
       t@@ -3994,8 +4003,8 @@ void gtk_notebook_realize(GtkWidget *widget)
              }
            }
          }
       -  gtk_notebook_set_page(GTK_NOTEBOOK(widget),
       -                        GTK_NOTEBOOK(widget)->selection);
       +  gtk_notebook_set_current_page(GTK_NOTEBOOK(widget),
       +                                GTK_NOTEBOOK(widget)->selection);
        }
        
        void gtk_notebook_show_all(GtkWidget *widget, gboolean hWndOnly)
       t@@ -4010,8 +4019,8 @@ void gtk_notebook_show_all(GtkWidget *widget, gboolean hWndOnly)
              if (note_child && note_child->child)
                gtk_widget_show_all_full(note_child->child, hWndOnly);
            }
       -  gtk_notebook_set_page(GTK_NOTEBOOK(widget),
       -                        GTK_NOTEBOOK(widget)->selection);
       +  gtk_notebook_set_current_page(GTK_NOTEBOOK(widget),
       +                                GTK_NOTEBOOK(widget)->selection);
        }
        
        void gtk_notebook_hide_all(GtkWidget *widget, gboolean hWndOnly)
       t@@ -4854,20 +4863,6 @@ static void gtk_menu_item_set_text(GtkMenuItem *menuitem, gchar *text)
          }
        }
        
       -guint gtk_label_parse_uline(GtkLabel *label, const gchar *str)
       -{
       -  gint i;
       -
       -  gtk_label_set_text(label, str);
       -  if (str)
       -    for (i = 0; i < strlen(str); i++) {
       -      if (str[i] == '_') {
       -        return str[i + 1];
       -      }
       -    }
       -  return 0;
       -}
       -
        const char *gtk_label_get_text(GtkLabel *label)
        {
          return label->text;
 (DIR) diff --git a/src/gtkport/gtkport.h b/src/gtkport/gtkport.h
       t@@ -444,6 +444,11 @@ void gtk_menu_insert(GtkMenu *menu, GtkWidget *child, gint position);
        void gtk_menu_append(GtkMenu *menu, GtkWidget *child);
        void gtk_menu_prepend(GtkMenu *menu, GtkWidget *child);
        GtkWidget *gtk_menu_item_new_with_label(const gchar *label);
       +void gtk_menu_item_set_right_justified(GtkMenuItem *menu_item,
       +                                       gboolean right_justified);
       +#define gtk_menu_item_new_with_mnemonic gtk_menu_item_new_with_label
       +#define gtk_check_menu_item_new_with_mnemonic gtk_menu_item_new_with_label
       +GtkMenu *gtk_menu_item_get_submenu(GtkMenuItem *menu_item);
        void gtk_menu_item_set_submenu(GtkMenuItem *menu_item, GtkWidget *submenu);
        void gtk_check_menu_item_set_active(GtkMenuItem *menu_item, gboolean active);
        gboolean gtk_check_menu_item_get_active(GtkMenuItem *menu_item);
       t@@ -453,7 +458,7 @@ void gtk_notebook_append_page(GtkNotebook *notebook, GtkWidget *child,
                                      GtkWidget *tab_label);
        void gtk_notebook_insert_page(GtkNotebook *notebook, GtkWidget *child,
                                      GtkWidget *tab_label, gint position);
       -void gtk_notebook_set_page(GtkNotebook *notebook, gint page_num);
       +void gtk_notebook_set_current_page(GtkNotebook *notebook, gint page_num);
        gint gtk_notebook_get_current_page(GtkNotebook *notebook);
        GObject *gtk_adjustment_new(gfloat value, gfloat lower, gfloat upper,
                                    gfloat step_increment, gfloat page_increment,
       t@@ -472,6 +477,8 @@ void g_object_set_data(GObject *object, const gchar *key,
        gpointer g_object_get_data(GObject *object, const gchar *key);
        GtkAccelGroup *gtk_accel_group_new();
        void gtk_accel_group_destroy(GtkAccelGroup *accel_group);
       +gint gtk_accel_group_add(GtkAccelGroup *accel_group,
       +                         ACCEL *newaccel);
        void gtk_widget_grab_default(GtkWidget *widget);
        void gtk_widget_grab_focus(GtkWidget *widget);
        void gtk_window_set_modal(GtkWindow *window, gboolean modal);
       t@@ -511,7 +518,9 @@ GtkTreeModel *gtk_combo_box_get_model(GtkComboBox *combo_box);
        gboolean gtk_combo_box_get_active_iter(GtkComboBox *combo_box,
                                               GtkTreeIter *iter);
        void gtk_label_set_text(GtkLabel *label, const gchar *str);
       -guint gtk_label_parse_uline(GtkLabel *label, const gchar *str);
       +/* Not currently supported */
       +#define gtk_label_set_text_with_mnemonic gtk_label_set_text
       +#define gtk_label_set_mnemonic_widget(label, widget) {}
        const gchar *gtk_label_get_text(GtkLabel *label);
        void gtk_text_set_point(GtkText *text, guint index);
        void gtk_widget_set_size_request(GtkWidget *widget, gint width, gint height);
 (DIR) diff --git a/src/gtkport/treeview.c b/src/gtkport/treeview.c
       t@@ -153,11 +153,11 @@ gboolean gtk_tree_view_wndproc(GtkWidget *widget, UINT msg, WPARAM wParam,
                return FALSE;
              case HDN_ITEMCLICKA:
                phdr = (HD_NOTIFYA FAR *)lParam;
       -        gtk_signal_emit(GTK_OBJECT(widget), "click-column", (gint)phdr->iItem);
       +        gtk_signal_emit(G_OBJECT(widget), "click-column", (gint)phdr->iItem);
                return FALSE;
              case HDN_ITEMCLICKW:
                phdrw = (HD_NOTIFYW FAR *)lParam;
       -        gtk_signal_emit(GTK_OBJECT(widget), "click-column", (gint)phdrw->iItem);
       +        gtk_signal_emit(G_OBJECT(widget), "click-column", (gint)phdrw->iItem);
                return FALSE;
              default:
                break;
       t@@ -320,6 +320,7 @@ void gtk_list_store_clear(GtkListStore *list_store)
            gtk_list_store_row_free(row, list_store);
          }
          g_array_set_size(list_store->rows, 0);
       +  list_store->need_sort = FALSE;  /* an empty store is sorted */
        
          if (list_store->view) {
            HWND hWnd;
       t@@ -357,6 +358,7 @@ void gtk_list_store_set(GtkListStore *list_store, GtkTreeIter *iter, ...)
          int colind;
          GtkListStoreRow *row = &g_array_index(list_store->rows, GtkListStoreRow,
                                                *iter);
       +  list_store->need_sort = TRUE;
        
          va_start(ap, iter);
          while ((colind = va_arg(ap, int)) >= 0) {
       t@@ -391,6 +393,16 @@ void gtk_list_store_set(GtkListStore *list_store, GtkTreeIter *iter, ...)
          }
        }
        
       +void gtk_list_store_swap(GtkListStore *store, GtkTreeIter *a, GtkTreeIter *b)
       +{
       +  GtkListStoreRow rowa = g_array_index(store->rows, GtkListStoreRow, *a);
       +  GtkListStoreRow rowb = g_array_index(store->rows, GtkListStoreRow, *b);
       +
       +  g_array_index(store->rows, GtkListStoreRow, *a) = rowb;
       +  g_array_index(store->rows, GtkListStoreRow, *b) = rowa;
       +  store->need_sort = TRUE;
       +}
       +
        void gtk_tree_model_get(GtkTreeModel *tree_model, GtkTreeIter *iter, ...)
        {
          va_list ap;
       t@@ -433,8 +445,21 @@ gboolean gtk_tree_model_iter_nth_child(GtkTreeModel *tree_model,
          /* We only work with one level (lists) for now */
          g_assert(parent == NULL);
          *iter = n;
       +  return TRUE;
       +}
       +
       +gint gtk_tree_model_iter_n_children(GtkTreeModel *tree_model,
       +                                    GtkTreeIter *iter)
       +{
       +  /* We only work with one level (lists) for now */
       +  if (iter) {
       +    return 1;
       +  } else {
       +    return tree_model->rows->len;
       +  }
        }
        
       +
        static void gtk_tree_view_column_free(gpointer data)
        {
          GtkTreeViewColumn *col = data;
       t@@ -446,6 +471,7 @@ void gtk_tree_model_free(GtkTreeModel *model)
        {
          gtk_list_store_clear(model);  /* Remove all rows */
          g_array_free(model->rows, TRUE);
       +  g_array_free(model->sort_func, TRUE);
          g_free(model->coltype);
          g_free(model);
        }
       t@@ -483,11 +509,12 @@ static void draw_cell_text(GtkTreeViewColumn *col, GtkTreeModel *model,
          UINT align;
          char *val;
          int modcol = col->model_column;
       -  switch(col->justification) {
       -  case GTK_JUSTIFY_RIGHT:
       +  /* Convert float 0.0, 0.5 or 1.0 into int, allow for some rounding error */
       +  switch((int)(col->xalign * 10. + 0.1)) {
       +  case 10:
            align = DT_RIGHT;
            break;
       -  case GTK_JUSTIFY_CENTER:
       +  case 5:
            align = DT_CENTER;
            break;
          default:
       t@@ -749,7 +776,7 @@ void gtk_tree_selection_unselect_all(GtkTreeSelection *selection)
        {
          GList *sel;
          for (sel = selection->selection; sel; sel = g_list_next(sel)) {
       -    int row = GPOINTER_TO_INT(sel->data);
       +    guint row = GPOINTER_TO_UINT(sel->data);
            gtk_tree_selection_unselect_path(selection, &row);
          }
        }
       t@@ -759,7 +786,7 @@ GList *gtk_tree_selection_get_selected_rows(GtkTreeSelection *selection,
        {
          GList *sel, *pathsel = NULL;
          for (sel = selection->selection; sel; sel = g_list_next(sel)) {
       -    int row = GPOINTER_TO_INT(sel->data);
       +    guint row = GPOINTER_TO_UINT(sel->data);
            GtkTreePath *path = g_new(GtkTreePath, 1);
            *path = row;
            pathsel = g_list_append(pathsel, path);
       t@@ -767,6 +794,13 @@ GList *gtk_tree_selection_get_selected_rows(GtkTreeSelection *selection,
          return pathsel;
        }
        
       +gint *gtk_tree_path_get_indices_with_depth(GtkTreePath *path, gint *depth)
       +{
       +  /* Only one level; path *is* the row index */
       +  *depth = 1;
       +  return path;
       +}
       +
        void gtk_tree_selection_unselect_path(GtkTreeSelection *selection,
                                              GtkTreePath *path)
        {
       t@@ -815,7 +849,7 @@ void gtk_tree_selection_selected_foreach(GtkTreeSelection *selection,
        {
          GList *sel;
          for (sel = selection->selection; sel; sel = g_list_next(sel)) {
       -    int row = GPOINTER_TO_INT(sel->data);
       +    guint row = GPOINTER_TO_UINT(sel->data);
            func(selection->model, &row, &row, data);
          }
        }
       t@@ -834,7 +868,7 @@ void gtk_tree_view_update_selection(GtkWidget *widget)
              }
            }
        
       -    gtk_signal_emit(GTK_OBJECT(widget), "changed");
       +    gtk_signal_emit(G_OBJECT(widget), "changed");
          }
        }
        
       t@@ -888,6 +922,9 @@ GtkListStore *gtk_list_store_new(gint n_columns, ...)
          store->ncols = n_columns;
          store->coltype = g_new(int, n_columns);
          store->rows = g_array_new(FALSE, FALSE, sizeof(GtkListStoreRow));
       +  store->sort_column_id = GTK_TREE_SORTABLE_UNSORTED_SORT_COLUMN_ID;
       +  store->sort_func = g_array_new(FALSE, TRUE, sizeof(gpointer));
       +  store->need_sort = FALSE;
          for (i = 0; i < n_columns; ++i) {
            store->coltype[i] = va_arg(ap, int);
          }
       t@@ -895,6 +932,31 @@ GtkListStore *gtk_list_store_new(gint n_columns, ...)
          return store;
        }
        
       +void gtk_tree_sortable_set_sort_func(GtkTreeSortable *sortable,
       +                                     gint sort_column_id,
       +                                     GtkTreeIterCompareFunc sort_func,
       +                                     gpointer user_data,
       +                                     GDestroyNotify destroy)
       +{
       +  /* We don't currently support user_data */
       +  if (sort_column_id >= sortable->sort_func->len) {
       +    g_array_set_size(sortable->sort_func, sort_column_id+1);
       +  }
       +  g_array_index(sortable->sort_func, gpointer, sort_column_id) = sort_func;
       +}
       +
       +void gtk_tree_sortable_set_sort_column_id(GtkTreeSortable *sortable,
       +                                          gint sort_column_id,
       +                                          GtkSortType order)
       +{
       +  if (sortable->sort_column_id != sort_column_id
       +      || sortable->sort_order != order) {
       +    sortable->sort_column_id = sort_column_id;
       +    sortable->sort_order = order;
       +    sortable->need_sort = TRUE;
       +  }
       +}
       +
        /* We don't support customizing renderers right now */
        GtkCellRenderer *gtk_cell_renderer_text_new(void)
        {
       t@@ -912,6 +974,7 @@ static GtkTreeViewColumn *new_column_internal(const char *title, va_list args)
          col->expand = FALSE;
          col->sort_column_id = -1;
          col->model_column = -1;
       +  col->xalign = 0.0;   /* left align by default */
        
          /* Currently we only support the "text" attribute to point to the
             ListStore column */
       t@@ -948,6 +1011,15 @@ gint gtk_tree_view_insert_column_with_attributes
          return gtk_tree_view_insert_column(tree_view, col, position);
        }
        
       +void gtk_tree_view_scroll_to_cell(GtkTreeView *tree_view,
       +                                  GtkTreePath *path,
       +                                  GtkTreeViewColumn *column,
       +                                  gboolean use_align, gfloat row_align,
       +                                  gfloat col_align)
       +{
       +  /* not implemented */
       +}
       +
        void gtk_tree_view_column_set_resizable(GtkTreeViewColumn *tree_column,
                                                gboolean resizable)
        {
       t@@ -966,6 +1038,12 @@ void gtk_tree_view_column_set_sort_column_id(GtkTreeViewColumn *tree_column,
          tree_column->sort_column_id = sort_column_id;
        }
        
       +void gtk_tree_view_column_set_alignment(GtkTreeViewColumn *tree_column,
       +                                        gfloat xalign)
       +{
       +  tree_column->xalign = xalign;
       +}
       +
        gint gtk_tree_view_insert_column(GtkTreeView *tree_view,
                                         GtkTreeViewColumn *column,
                                         gint position)
 (DIR) diff --git a/src/gtkport/treeview.h b/src/gtkport/treeview.h
       t@@ -52,6 +52,10 @@ typedef struct _GtkListStoreRow GtkListStoreRow;
        typedef guint GtkTreeIter;
        typedef guint GtkTreePath;
        
       +typedef gint (*GtkTreeIterCompareFunc) (GtkTreeModel *model,
       +                                        GtkTreeIter *a, GtkTreeIter *b,
       +                                        gpointer user_data);
       +
        struct _GtkTreeView {
          GtkContainer container;
          HWND header, scrollwin;
       t@@ -70,7 +74,7 @@ struct _GtkTreeViewColumn {
          gint sort_column_id; /* what to sort by when this column is selected */
          gint width;
          gint optimal_width;
       -  GtkJustification justification;
       +  gfloat xalign; /* 0.0 for left, 0.5 for center, 1.0 for right align */
          guint visible:1;
          guint resizeable:1;
          guint auto_resize:1;
       t@@ -86,6 +90,10 @@ struct _GtkListStore {
          int *coltype;      /* Type of each column (e.g. G_TYPE_STRING) */
          GArray *rows;      /* All rows in the list as GtkListStoreRow */
          GtkTreeView *view; /* The currently connected view (only one supported) */
       +  gint sort_column_id; /* what to sort by, if >= 0 */
       +  GtkSortType sort_order;
       +  GArray *sort_func;   /* callback functions for sorting, by sort_column_id */
       +  gint need_sort:1;  /* set once data is added/changed */
        };
        
        /* Empty struct; we don't support customizing the renderer */
       t@@ -110,11 +118,14 @@ void gtk_list_store_insert(GtkListStore *list_store, GtkTreeIter *iter,
        void gtk_list_store_append(GtkListStore *list_store, GtkTreeIter *iter);
        gboolean gtk_list_store_remove(GtkListStore *list_store, GtkTreeIter *iter);
        void gtk_list_store_set(GtkListStore *list_store, GtkTreeIter *iter, ...);
       +void gtk_list_store_swap(GtkListStore *store, GtkTreeIter *a, GtkTreeIter *b);
        
        void gtk_tree_model_get(GtkTreeModel *tree_model, GtkTreeIter *iter, ...);
        gboolean gtk_tree_model_iter_nth_child(GtkTreeModel *tree_model,
                                               GtkTreeIter *iter,
                                               GtkTreeIter *parent, gint n);
       +gint gtk_tree_model_iter_n_children(GtkTreeModel *tree_model,
       +                                    GtkTreeIter *iter);
        
        GtkWidget *gtk_tree_view_new(void);
        GtkTreeSelection *gtk_tree_view_get_selection(GtkTreeView *tree_view);
       t@@ -125,7 +136,11 @@ void gtk_tree_view_set_headers_clickable(GtkTreeView *tree_view,
        gint gtk_tree_view_insert_column_with_attributes
                    (GtkTreeView *tree_view, gint position, const gchar *title,
                     GtkCellRenderer *cell, ...);
       -
       +void gtk_tree_view_scroll_to_cell(GtkTreeView *tree_view,
       +                                  GtkTreePath *path,
       +                                  GtkTreeViewColumn *column,
       +                                  gboolean use_align, gfloat row_align,
       +                                  gfloat col_align);
        void gtk_tree_selection_selected_foreach(GtkTreeSelection *selection,
                                                 GtkTreeSelectionForeachFunc func,
                                                 gpointer data);
       t@@ -145,6 +160,7 @@ void gtk_tree_selection_unselect_all(GtkTreeSelection *selection);
        GList *gtk_tree_selection_get_selected_rows(GtkTreeSelection *selection,
                                                    GtkTreeModel **model);
        #define gtk_tree_path_free g_free
       +gint *gtk_tree_path_get_indices_with_depth(GtkTreePath *path, gint *depth);
        GtkTreeViewColumn *gtk_tree_view_column_new_with_attributes
                           (const gchar *title, GtkCellRenderer *cell, ...);
        void gtk_tree_view_column_set_resizable(GtkTreeViewColumn *tree_column,
       t@@ -153,11 +169,25 @@ void gtk_tree_view_column_set_expand(GtkTreeViewColumn *tree_column,
                                             gboolean expand);
        void gtk_tree_view_column_set_sort_column_id(GtkTreeViewColumn *tree_column,
                                                     gint sort_column_id);
       +/* We treat this as the alignment of all cells in this column, not just the
       +   alignment of the header */
       +void gtk_tree_view_column_set_alignment(GtkTreeViewColumn *tree_column,
       +                                        gfloat xalign);
       +/* This is only used to set the xalign property, so make it a noop */
       +#define g_object_set(object, name, value, end) {}
        gint gtk_tree_view_insert_column(GtkTreeView *tree_view,
                                         GtkTreeViewColumn *column,
                                         gint position);
        GtkTreeViewColumn *gtk_tree_view_get_column(GtkTreeView *tree_view, gint n);
        
       +void gtk_tree_sortable_set_sort_func(GtkTreeSortable *sortable,
       +                                     gint sort_column_id,
       +                                     GtkTreeIterCompareFunc sort_func,
       +                                     gpointer user_data,
       +                                     GDestroyNotify destroy);
       +void gtk_tree_sortable_set_sort_column_id(GtkTreeSortable *sortable,
       +                                          gint sort_column_id,
       +                                          GtkSortType order);
        GtkCellRenderer *gtk_cell_renderer_text_new(void);
        
        void g_object_unref(gpointer object);
 (DIR) diff --git a/src/gui_client/newgamedia.c b/src/gui_client/newgamedia.c
       t@@ -636,7 +636,8 @@ void NewGameDialog(Player *play)
                           G_CALLBACK(MetaServerConnect), NULL);
          gtk_widget_set_sensitive(button, FALSE);
          treesel = gtk_tree_view_get_selection(GTK_TREE_VIEW(clist));
       -  g_signal_connect(treesel, "changed", G_CALLBACK(metalist_changed), button);
       +  g_signal_connect(G_OBJECT(treesel), "changed", G_CALLBACK(metalist_changed),
       +                   button);
          my_gtk_box_pack_start_defaults(GTK_BOX(hbbox), button);
        
          gtk_box_pack_start(GTK_BOX(vbox2), hbbox, FALSE, FALSE, 0);
 (DIR) diff --git a/src/serverside.c b/src/serverside.c
       t@@ -1661,7 +1661,7 @@ void GuiServerLoop(struct CMDLINE *cmdline, gboolean is_service)
          }
        
          window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
       -  g_signal_connect(GTK_OBJECT(window), "delete_event",
       +  g_signal_connect(G_OBJECT(window), "delete_event",
                           G_CALLBACK(GuiRequestDelete), NULL);
          gtk_window_set_default_size(GTK_WINDOW(window), 500, 250);
        
       t@@ -1680,7 +1680,7 @@ void GuiServerLoop(struct CMDLINE *cmdline, gboolean is_service)
          label = gtk_label_new(_("Command:"));
          gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
          entry = gtk_entry_new();
       -  g_signal_connect(GTK_OBJECT(entry), "activate",
       +  g_signal_connect(G_OBJECT(entry), "activate",
                           G_CALLBACK(GuiDoCommand), NULL);
          gtk_box_pack_start(GTK_BOX(hbox), entry, TRUE, TRUE, 0);
          gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);