Mercurial > hg > xemacs-beta
diff lwlib/lwlib-Xlw.c @ 70:131b0175ea99 r20-0b30
Import from CVS: tag r20-0b30
author | cvs |
---|---|
date | Mon, 13 Aug 2007 09:02:59 +0200 |
parents | 9ee227acff29 |
children | c7528f8e288d |
line wrap: on
line diff
--- a/lwlib/lwlib-Xlw.c Mon Aug 13 09:00:04 2007 +0200 +++ b/lwlib/lwlib-Xlw.c Mon Aug 13 09:02:59 2007 +0200 @@ -14,9 +14,8 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License -along with XEmacs; see the file COPYING. If not, write to -the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. */ +along with GNU Emacs; see the file COPYING. If not, write to +the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ #include <stdlib.h> /* for abort () */ #include <limits.h> @@ -54,7 +53,7 @@ /* #### - this code used to (for some random back_asswards reason) pass the expression below in the call_data slot. For incremental menu construction, this needs to go. I can't even figure out why it was done - this way in the first place...it's just a historical weirdism. --Stig */ + this way in the first place...it's just a historical wierdism. --Stig */ call_data = (val ? val->call_data : NULL); #endif if (val && val->call_data) @@ -108,7 +107,7 @@ instance->parent, XtNmenu, instance->info->val, 0); - XtAddCallback (widget, XtNopen, pre_hook, (XtPointer)instance); + XtAddCallback (widget, XtNopen, pre_hook, (XtPointer)instance); XtAddCallback (widget, XtNselect, pick_hook, (XtPointer)instance); return widget; } @@ -155,14 +154,14 @@ event_data.slider_value = (int) (percent * (double) (val->maximum - val->minimum)) + val->minimum; - if (event_data.slider_value > val->maximum - val->slider_size) - event_data.slider_value = val->maximum - val->slider_size; + if (event_data.slider_value > (val->maximum - val->slider_size)) + event_data.slider_value = val->maximum - val->slider_size; else if (event_data.slider_value < val->minimum) - event_data.slider_value = val->minimum; + event_data.slider_value = val->minimum; if (data->event) { - switch (data->event->type) + switch (data->event->xany.type) { case KeyPress: case KeyRelease: @@ -189,53 +188,81 @@ switch (data->reason) { - case XmCR_DECREMENT: event_data.action = SCROLLBAR_LINE_UP; break; - case XmCR_INCREMENT: event_data.action = SCROLLBAR_LINE_DOWN; break; - case XmCR_PAGE_DECREMENT: event_data.action = SCROLLBAR_PAGE_UP; break; - case XmCR_PAGE_INCREMENT: event_data.action = SCROLLBAR_PAGE_DOWN; break; - case XmCR_TO_TOP: event_data.action = SCROLLBAR_TOP; break; - case XmCR_TO_BOTTOM: event_data.action = SCROLLBAR_BOTTOM; break; - case XmCR_DRAG: event_data.action = SCROLLBAR_DRAG; break; - case XmCR_VALUE_CHANGED: event_data.action = SCROLLBAR_CHANGE; break; - default: event_data.action = SCROLLBAR_CHANGE; break; + case XmCR_DECREMENT: + event_data.action = SCROLLBAR_LINE_UP; + break; + case XmCR_INCREMENT: + event_data.action = SCROLLBAR_LINE_DOWN; + break; + case XmCR_PAGE_DECREMENT: + event_data.action = SCROLLBAR_PAGE_UP; + break; + case XmCR_PAGE_INCREMENT: + event_data.action = SCROLLBAR_PAGE_DOWN; + break; + case XmCR_TO_TOP: + event_data.action = SCROLLBAR_TOP; + break; + case XmCR_TO_BOTTOM: + event_data.action = SCROLLBAR_BOTTOM; + break; + case XmCR_DRAG: + event_data.action = SCROLLBAR_DRAG; + break; + case XmCR_VALUE_CHANGED: + event_data.action = SCROLLBAR_CHANGE; + break; + default: + event_data.action = SCROLLBAR_CHANGE; + break; } if (instance->info->pre_activate_cb) instance->info->pre_activate_cb (widget, id, (XtPointer) &event_data); } -#define add_scrollbar_callback(resource) \ -XtAddCallback (scrollbar, resource, xlw_scrollbar_callback, (XtPointer) instance) - /* #### Does not yet support horizontal scrollbars. */ static Widget xlw_create_scrollbar (widget_instance *instance, int vertical) { Arg al[20]; int ac = 0; - static XtCallbackRec callbacks[2] = - { {xlw_scrollbar_callback, NULL}, {NULL, NULL} }; - - callbacks[0].closure = (XtPointer) instance; + Widget scrollbar; - XtSetArg (al[ac], XmNminimum, 1); ac++; - XtSetArg (al[ac], XmNmaximum, INT_MAX); ac++; - XtSetArg (al[ac], XmNincrement, 1); ac++; - XtSetArg (al[ac], XmNpageIncrement, 1); ac++; - XtSetArg (al[ac], XmNorientation, (vertical ? XmVERTICAL : XmHORIZONTAL)); - ac++; + XtSetArg (al[ac], (String) XmNminimum, 1); ac++; + XtSetArg (al[ac], (String) XmNmaximum, INT_MAX); ac++; + XtSetArg (al[ac], (String) XmNincrement, 1); ac++; + XtSetArg (al[ac], (String) XmNpageIncrement, 1); ac++; + if (vertical) + { + XtSetArg (al[ac], (String) XmNorientation, XmVERTICAL); ac++; + } + else + { + XtSetArg (al[ac], (String) XmNorientation, XmHORIZONTAL); ac++; + } + + scrollbar = + XtCreateWidget (instance->info->name, xlwScrollBarWidgetClass, instance->parent, al, ac); - XtSetArg (al[ac], XmNdecrementCallback, callbacks); ac++; - XtSetArg (al[ac], XmNdragCallback, callbacks); ac++; - XtSetArg (al[ac], XmNincrementCallback, callbacks); ac++; - XtSetArg (al[ac], XmNpageDecrementCallback, callbacks); ac++; - XtSetArg (al[ac], XmNpageIncrementCallback, callbacks); ac++; - XtSetArg (al[ac], XmNtoBottomCallback, callbacks); ac++; - XtSetArg (al[ac], XmNtoTopCallback, callbacks); ac++; - XtSetArg (al[ac], XmNvalueChangedCallback, callbacks); ac++; + XtAddCallback(scrollbar, XmNdecrementCallback, xlw_scrollbar_callback, + (XtPointer) instance); + XtAddCallback(scrollbar, XmNdragCallback, xlw_scrollbar_callback, + (XtPointer) instance); + XtAddCallback(scrollbar, XmNincrementCallback, xlw_scrollbar_callback, + (XtPointer) instance); + XtAddCallback(scrollbar, XmNpageDecrementCallback, xlw_scrollbar_callback, + (XtPointer) instance); + XtAddCallback(scrollbar, XmNpageIncrementCallback, xlw_scrollbar_callback, + (XtPointer) instance); + XtAddCallback(scrollbar, XmNtoBottomCallback, xlw_scrollbar_callback, + (XtPointer) instance); + XtAddCallback(scrollbar, XmNtoTopCallback, xlw_scrollbar_callback, + (XtPointer) instance); + XtAddCallback(scrollbar, XmNvalueChangedCallback, xlw_scrollbar_callback, + (XtPointer) instance); - return XtCreateWidget (instance->info->name, xlwScrollBarWidgetClass, - instance->parent, al, ac); + return scrollbar; } static Widget @@ -261,7 +288,9 @@ int new_sliderSize, new_value; double percent; - /* First size and position the scrollbar widget. */ + /* + * First size and position the scrollbar widget. + */ XtVaSetValues (widget, XtNx, data->scrollbar_x, XtNy, data->scrollbar_y, @@ -269,10 +298,13 @@ XtNheight, data->scrollbar_height, 0); - /* Now size the scrollbar's slider. */ + /* + * Now the size the scrollbar's slider. + */ + XtVaGetValues (widget, XmNsliderSize, &widget_sliderSize, - XmNvalue, &widget_val, + XmNvalue, &widget_val, 0); percent = (double) data->slider_size / @@ -285,15 +317,15 @@ percent = (percent > 1.0 ? 1.0 : percent); new_value = (int) ((double) (INT_MAX - 1) * percent); - if (new_sliderSize > INT_MAX - 1) - new_sliderSize = INT_MAX - 1; + if (new_sliderSize > (INT_MAX - 1)) + new_sliderSize = INT_MAX - 1; if (new_sliderSize < 1) - new_sliderSize = 1; + new_sliderSize = 1; if (new_value > (INT_MAX - new_sliderSize)) - new_value = INT_MAX - new_sliderSize; + new_value = INT_MAX - new_sliderSize; else if (new_value < 1) - new_value = 1; + new_value = 1; if (new_sliderSize != widget_sliderSize || new_value != widget_val) XlwScrollBarSetValues (widget, new_value, new_sliderSize, 1, 1, False); @@ -404,3 +436,4 @@ if (instance->widget) XtDestroyWidget (instance->widget); } +