X-Git-Url: http://git.chise.org/gitweb/?p=chise%2Fxemacs-chise.git.1;a=blobdiff_plain;f=src%2Fglyphs-x.c;h=105bbffc586898e069177f292c54c1d8e23b0a3a;hp=8c298398c14e99ae3725070a9e15a76c8745990b;hb=0a57cba46779af884cc537d18923dcb6313b9904;hpb=1cc5b779cb8755e01e02aead4fba711c06158b90 diff --git a/src/glyphs-x.c b/src/glyphs-x.c index 8c29839..105bbff 100644 --- a/src/glyphs-x.c +++ b/src/glyphs-x.c @@ -4,7 +4,7 @@ Copyright (C) 1995 Tinker Systems Copyright (C) 1995, 1996 Ben Wing Copyright (C) 1995 Sun Microsystems - Copyright (C) 1999, 2000 Andy Piper + Copyright (C) 1999, 2000, 2002 Andy Piper This file is part of XEmacs. @@ -158,6 +158,8 @@ update_tab_widget_face (widget_value* wv, #endif void emacs_Xt_handle_widget_losing_focus (struct frame* f, Widget losing_widget); +void +enqueue_focus_event (Widget wants_it, Lisp_Object frame, int in_p); #include "bitmaps.h" @@ -231,7 +233,8 @@ convert_EImage_to_XImage (Lisp_Object device, int width, int height, if (vis->class == PseudoColor) { unsigned long pixarray[256]; - int pixcount, n; + int pixcount; + unsigned int n; /* use our quantize table to allocate the colors */ pixcount = 32; *pixtbl = xnew_array (unsigned long, pixcount); @@ -432,7 +435,7 @@ x_finalize_image_instance (Lisp_Image_Instance *p) } else { - int i; + unsigned int i; if (IMAGE_INSTANCE_PIXMAP_TIMEOUT (p)) disable_glyph_animated_timeout (IMAGE_INSTANCE_PIXMAP_TIMEOUT (p)); @@ -703,7 +706,7 @@ write_lisp_string_to_temp_file (Lisp_Object string, char *filename_out) /* Get the data while doing the conversion */ while (1) { - ssize_t size_in_bytes = Lstream_read (istr, tempbuf, sizeof (tempbuf)); + Lstream_data_count size_in_bytes = Lstream_read (istr, tempbuf, sizeof (tempbuf)); if (!size_in_bytes) break; /* It does seem the flushes are necessary... */ @@ -1147,7 +1150,7 @@ init_image_instance_from_xbm_inline (Lisp_Image_Instance *ii, break; default: - abort (); + ABORT (); } } @@ -1274,7 +1277,7 @@ extract_xpm_color_names (XpmAttributes *xpmattrs, Lisp_Object device, /* Duplicate the pixel value so that we still have a lock on it if the pixel we were passed is later freed. */ if (! XAllocColor (dpy, cmap, &color)) - abort (); /* it must be allocable since we're just duplicating it */ + ABORT (); /* it must be allocable since we're just duplicating it */ symbols [i].name = (char *) XSTRING_DATA (XCAR (cons)); symbols [i].pixel = color.pixel; @@ -1629,7 +1632,7 @@ x_xpm_instantiate (Lisp_Object image_instance, Lisp_Object instantiator, break; default: - abort (); + ABORT (); } xpm_free (&xpmattrs); /* after we've read pixels and hotspot */ @@ -2171,6 +2174,14 @@ x_map_subwindow (Lisp_Image_Instance *p, int x, int y, -dga->xoffset, -dga->yoffset); if (!IMAGE_INSTANCE_SUBWINDOW_DISPLAYEDP (p)) XtMapWidget (IMAGE_INSTANCE_X_CLIPWIDGET (p)); + /* See comments in glyphs-msw.c about keyboard focus. */ + if (IMAGE_INSTANCE_WANTS_INITIAL_FOCUS (p)) { + /* #### FIXME to pop-up the find dialog we map the text-field + seven times! This doesn't show on a fast linux box but does + under X on windows. */ + enqueue_focus_event (IMAGE_INSTANCE_X_WIDGET_ID (p), + IMAGE_INSTANCE_FRAME (p), 1); + } } } @@ -2345,6 +2356,14 @@ x_subwindow_instantiate (Lisp_Object image_instance, Lisp_Object instantiator, IMAGE_INSTANCE_SUBWINDOW_ID (ii) = (void*)win; } +/* Account for some of the limitations with widget images. */ +static int +x_widget_border_width (void) +{ + return DEFAULT_WIDGET_BORDER_WIDTH * 2; +} + + #if 0 /* #### Should this function exist? If there's any doubt I'm not implementing it --andyp */ DEFUN ("change-subwindow-property", Fchange_subwindow_property, 3, 3, 0, /* @@ -2507,6 +2526,10 @@ x_widget_instantiate (Lisp_Object image_instance, Lisp_Object instantiator, free_widget_value_tree (clip_wv); + /* create a sensible name. */ + if (wv->name == 0 || strcmp(wv->name, "") == 0) + wv->name = xstrdup (type); + /* copy any args we were given */ ac = 0; lw_add_value_args_to_args (wv, al, &ac); @@ -2778,7 +2801,7 @@ x_tab_control_redisplay (Lisp_Object image_instance) but I couldn't find it. */ Lisp_Object old_selected =gui_item_list_find_selected (XCDR (IMAGE_INSTANCE_WIDGET_ITEMS (ii))); - Arg al [1]; + Arg al [2]; char* name; unsigned int num_children, i; Widget* children; @@ -2794,7 +2817,9 @@ x_tab_control_redisplay (Lisp_Object image_instance) if (!strcmp (XtName (children [i]), name)) { XtSetArg (al [0], XtNtopWidget, children [i]); - XtSetValues (IMAGE_INSTANCE_X_WIDGET_ID (ii), al, 1); + XtSetArg (al [1], XtNhighlightWidget, + children [i]); + XtSetValues (IMAGE_INSTANCE_X_WIDGET_ID (ii), al, 2); break; } } @@ -2880,6 +2905,7 @@ console_type_create_glyphs_x (void) CONSOLE_HAS_METHOD (x, map_subwindow); CONSOLE_HAS_METHOD (x, redisplay_widget); CONSOLE_HAS_METHOD (x, redisplay_subwindow); + CONSOLE_HAS_METHOD (x, widget_border_width); } void