Crossfire Archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: CF: What's up with this?





On Sun, 13 Dec 1998, There can be only one. wrote:

> Hello everyone,
> 
> Now and then, after reading a sign or a book on the floor with the `a'
> action command, all the keys no longer function except the arrow keys.
> If you use, say, the CTRL key for running or the `SHIFT' key for fire,
> it acts as if that key wasn't bound to anything.  It's really annoying
> when you can't use the apostrophe ' thing to enter commands too :-)

Yes, it's a known problem. Apply the patch :).

/David
*** gx11.c.orig	Fri Dec  4 21:32:23 1998
--- gx11.c	Fri Dec  4 21:35:54 1998
***************
*** 394,401 ****
  static GtkWidget *history_list = NULL;
  static GtkWidget *gtkwin_config = NULL;
  
! static char last_str[MAX_BUF];
! 
  
  static int pickup_mode = 0;
  
--- 394,400 ----
  static GtkWidget *history_list = NULL;
  static GtkWidget *gtkwin_config = NULL;
  
! static char *last_str;
  
  static int pickup_mode = 0;
  
***************
*** 440,445 ****
--- 439,446 ----
  
  void end_windows()
  {
+   free(last_str);
+ 
    /*    XFreeGC(display, gc_root);
      XFreeGC(display, gc_game);
      XFreeGC(display, gc_stats);
***************
*** 1908,1917 ****
    char buffer[3][MAX_BUF];
    char *buffers[3];
    gint list;
!   
    /* Is it the inventory or look list? */
    if (l->multi_list) {
! 
      /* Ok, inventory list. Animations are handled in client code. First do the nice thing and
       * free all allocated animation lists.
       */
--- 1909,1918 ----
    char buffer[3][MAX_BUF];
    char *buffers[3];
    gint list;
! 
    /* Is it the inventory or look list? */
    if (l->multi_list) {
!     
      /* Ok, inventory list. Animations are handled in client code. First do the nice thing and
       * free all allocated animation lists.
       */
***************
*** 1996,2002 ****
  			    pixmaps[facecachemap[tmp->face]].gdkmask); 
        gtk_clist_set_row_data (GTK_CLIST(l->gtk_list[0]), tmprow, tmp);
        if (color_inv) { 
! 	if (tmp->cursed) {
  	  gtk_clist_set_background (GTK_CLIST(l->gtk_list[0]), tmprow,
  				    &root_color[NDI_RED]);
  	}
--- 1997,2003 ----
  			    pixmaps[facecachemap[tmp->face]].gdkmask); 
        gtk_clist_set_row_data (GTK_CLIST(l->gtk_list[0]), tmprow, tmp);
        if (color_inv) { 
! 	if (tmp->cursed || tmp->damned) {
  	  gtk_clist_set_background (GTK_CLIST(l->gtk_list[0]), tmprow,
  				    &root_color[NDI_RED]);
  	}
***************
*** 2004,2010 ****
  	  gtk_clist_set_background (GTK_CLIST(l->gtk_list[0]), tmprow,
  				    &root_color[NDI_BLUE]);
  	}
! 	if (tmp->cursed && tmp->magical) {
  	  gtk_clist_set_background (GTK_CLIST(l->gtk_list[0]), tmprow,
  				    &root_color[NDI_NAVY]);
  	}
--- 2005,2011 ----
  	  gtk_clist_set_background (GTK_CLIST(l->gtk_list[0]), tmprow,
  				    &root_color[NDI_BLUE]);
  	}
! 	if ((tmp->cursed || tmp->damned) && tmp->magical) {
  	  gtk_clist_set_background (GTK_CLIST(l->gtk_list[0]), tmprow,
  				    &root_color[NDI_NAVY]);
  	}
***************
*** 2160,2170 ****
--- 2161,2176 ----
      for (list=0; list < 8; list++) {
        gtk_adjustment_set_value (GTK_ADJUSTMENT (GTK_RANGE (GTK_CLIST(l->gtk_list[list])->vscrollbar)->adjustment), l->pos[list]);
        gtk_clist_thaw (GTK_CLIST(l->gtk_list[list]));
+       /*      gtk_widget_draw_children (l->gtk_list[list]);
+ 	      gtk_widget_draw (l->gtk_list[list],NULL);*/
      }
      
    } else {
+ 
      gtk_adjustment_set_value (GTK_ADJUSTMENT (GTK_RANGE (GTK_CLIST(l->gtk_list[0])->vscrollbar)->adjustment), l->pos[0]);
      gtk_clist_thaw (GTK_CLIST(l->gtk_list[0]));
+     /*    gtk_widget_draw_children (l->gtk_list[0]);
+ 	  gtk_widget_draw (l->gtk_list[0],NULL);*/
    }
  
  }
***************
*** 3340,3346 ****
        node =  GTK_CLIST(gtklist)->selection;
        tmp = gtk_clist_get_row_data (GTK_CLIST(gtklist), (gint)node->data); 
        gtk_clist_unselect_row (GTK_CLIST(gtklist), (gint)node->data, 0);
!       client_send_examine (tmp->tag);
      }
    }
    if (event->type==GDK_BUTTON_PRESS && event->button==2) {
--- 3346,3355 ----
        node =  GTK_CLIST(gtklist)->selection;
        tmp = gtk_clist_get_row_data (GTK_CLIST(gtklist), (gint)node->data); 
        gtk_clist_unselect_row (GTK_CLIST(gtklist), (gint)node->data, 0);
!       if (event->state & GDK_SHIFT_MASK)
! 	toggle_locked(tmp);
!       else
! 	client_send_examine (tmp->tag);     
      }
    }
    if (event->type==GDK_BUTTON_PRESS && event->button==2) {
***************
*** 3349,3355 ****
        tmp = gtk_clist_get_row_data (GTK_CLIST(gtklist), (gint)node->data); 
  
        gtk_clist_unselect_row (GTK_CLIST(gtklist), (gint)node->data, 0);
!       client_send_apply (tmp->tag);
      }
    }
    if (event->type==GDK_BUTTON_PRESS && event->button==3) {
--- 3358,3367 ----
        tmp = gtk_clist_get_row_data (GTK_CLIST(gtklist), (gint)node->data); 
  
        gtk_clist_unselect_row (GTK_CLIST(gtklist), (gint)node->data, 0);
!       if (event->state & GDK_SHIFT_MASK)
! 	send_mark_obj(tmp);
!       else
! 	client_send_apply (tmp->tag);
      }
    }
    if (event->type==GDK_BUTTON_PRESS && event->button==3) {
***************
*** 3609,3622 ****
    if (inv_list.env->inv_updated) {
  
      draw_list (&inv_list);
- 
      inv_list.env->inv_updated = 0;
!   }
!   
!   if (look_list.env->inv_updated) {
! 
!     draw_list (&look_list);
!     look_list.env->inv_updated = 0;
    }
  }
  
--- 3621,3632 ----
    if (inv_list.env->inv_updated) {
  
      draw_list (&inv_list);
      inv_list.env->inv_updated = 0;
!   } else {
!     if (look_list.env->inv_updated) {
!       draw_list (&look_list);
!       look_list.env->inv_updated = 0;
!     }
    }
  }
  
***************
*** 5335,5340 ****
--- 5345,5351 ----
  int sync_display = 0;
  static int get_root_display(char *display_name,int gargc, char **gargv) {
    gtk_init (&gargc,&gargv);
+   last_str=malloc(32767);
  
    create_splash();
    create_windows();