comparison lwlib/lwlib-Xlw.c @ 14:9ee227acff29 r19-15b90

Import from CVS: tag r19-15b90
author cvs
date Mon, 13 Aug 2007 08:48:42 +0200
parents bcdc7deadc19
children 131b0175ea99
comparison
equal deleted inserted replaced
13:13c6d0aaafe5 14:9ee227acff29
12 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details. 14 GNU General Public License for more details.
15 15
16 You should have received a copy of the GNU General Public License 16 You should have received a copy of the GNU General Public License
17 along with GNU Emacs; see the file COPYING. If not, write to 17 along with XEmacs; see the file COPYING. If not, write to
18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
19 Boston, MA 02111-1307, USA. */ 19 Boston, MA 02111-1307, USA. */
20 20
21 #include <stdlib.h> /* for abort () */ 21 #include <stdlib.h> /* for abort () */
22 #include <limits.h> 22 #include <limits.h>
106 Widget widget = 106 Widget widget =
107 XtVaCreateWidget (instance->info->name, xlwMenuWidgetClass, 107 XtVaCreateWidget (instance->info->name, xlwMenuWidgetClass,
108 instance->parent, 108 instance->parent,
109 XtNmenu, instance->info->val, 109 XtNmenu, instance->info->val,
110 0); 110 0);
111 XtAddCallback (widget, XtNopen, pre_hook, (XtPointer)instance); 111 XtAddCallback (widget, XtNopen, pre_hook, (XtPointer)instance);
112 XtAddCallback (widget, XtNselect, pick_hook, (XtPointer)instance); 112 XtAddCallback (widget, XtNselect, pick_hook, (XtPointer)instance);
113 return widget; 113 return widget;
114 } 114 }
115 115
116 static Widget 116 static Widget
153 153
154 percent = (double) (data->value - 1) / (double) (INT_MAX - 1); 154 percent = (double) (data->value - 1) / (double) (INT_MAX - 1);
155 event_data.slider_value = 155 event_data.slider_value =
156 (int) (percent * (double) (val->maximum - val->minimum)) + val->minimum; 156 (int) (percent * (double) (val->maximum - val->minimum)) + val->minimum;
157 157
158 if (event_data.slider_value > (val->maximum - val->slider_size)) 158 if (event_data.slider_value > val->maximum - val->slider_size)
159 event_data.slider_value = val->maximum - val->slider_size; 159 event_data.slider_value = val->maximum - val->slider_size;
160 else if (event_data.slider_value < val->minimum) 160 else if (event_data.slider_value < val->minimum)
161 event_data.slider_value = val->minimum; 161 event_data.slider_value = val->minimum;
162 162
163 if (data->event) 163 if (data->event)
164 { 164 {
165 switch (data->event->type) 165 switch (data->event->type)
166 { 166 {
187 else 187 else
188 event_data.time = 0; 188 event_data.time = 0;
189 189
190 switch (data->reason) 190 switch (data->reason)
191 { 191 {
192 case XmCR_DECREMENT: 192 case XmCR_DECREMENT: event_data.action = SCROLLBAR_LINE_UP; break;
193 event_data.action = SCROLLBAR_LINE_UP; 193 case XmCR_INCREMENT: event_data.action = SCROLLBAR_LINE_DOWN; break;
194 break; 194 case XmCR_PAGE_DECREMENT: event_data.action = SCROLLBAR_PAGE_UP; break;
195 case XmCR_INCREMENT: 195 case XmCR_PAGE_INCREMENT: event_data.action = SCROLLBAR_PAGE_DOWN; break;
196 event_data.action = SCROLLBAR_LINE_DOWN; 196 case XmCR_TO_TOP: event_data.action = SCROLLBAR_TOP; break;
197 break; 197 case XmCR_TO_BOTTOM: event_data.action = SCROLLBAR_BOTTOM; break;
198 case XmCR_PAGE_DECREMENT: 198 case XmCR_DRAG: event_data.action = SCROLLBAR_DRAG; break;
199 event_data.action = SCROLLBAR_PAGE_UP; 199 case XmCR_VALUE_CHANGED: event_data.action = SCROLLBAR_CHANGE; break;
200 break; 200 default: event_data.action = SCROLLBAR_CHANGE; break;
201 case XmCR_PAGE_INCREMENT:
202 event_data.action = SCROLLBAR_PAGE_DOWN;
203 break;
204 case XmCR_TO_TOP:
205 event_data.action = SCROLLBAR_TOP;
206 break;
207 case XmCR_TO_BOTTOM:
208 event_data.action = SCROLLBAR_BOTTOM;
209 break;
210 case XmCR_DRAG:
211 event_data.action = SCROLLBAR_DRAG;
212 break;
213 case XmCR_VALUE_CHANGED:
214 event_data.action = SCROLLBAR_CHANGE;
215 break;
216 default:
217 event_data.action = SCROLLBAR_CHANGE;
218 break;
219 } 201 }
220 202
221 if (instance->info->pre_activate_cb) 203 if (instance->info->pre_activate_cb)
222 instance->info->pre_activate_cb (widget, id, (XtPointer) &event_data); 204 instance->info->pre_activate_cb (widget, id, (XtPointer) &event_data);
223 } 205 }
285 XtNy, data->scrollbar_y, 267 XtNy, data->scrollbar_y,
286 XtNwidth, data->scrollbar_width, 268 XtNwidth, data->scrollbar_width,
287 XtNheight, data->scrollbar_height, 269 XtNheight, data->scrollbar_height,
288 0); 270 0);
289 271
290 /* Now the size the scrollbar's slider. */ 272 /* Now size the scrollbar's slider. */
291
292 XtVaGetValues (widget, 273 XtVaGetValues (widget,
293 XmNsliderSize, &widget_sliderSize, 274 XmNsliderSize, &widget_sliderSize,
294 XmNvalue, &widget_val, 275 XmNvalue, &widget_val,
295 0); 276 0);
296 277
297 percent = (double) data->slider_size / 278 percent = (double) data->slider_size /
298 (double) (data->maximum - data->minimum); 279 (double) (data->maximum - data->minimum);
299 percent = (percent > 1.0 ? 1.0 : percent); 280 percent = (percent > 1.0 ? 1.0 : percent);
302 percent = (double) (data->slider_position - data->minimum) / 283 percent = (double) (data->slider_position - data->minimum) /
303 (double) (data->maximum - data->minimum); 284 (double) (data->maximum - data->minimum);
304 percent = (percent > 1.0 ? 1.0 : percent); 285 percent = (percent > 1.0 ? 1.0 : percent);
305 new_value = (int) ((double) (INT_MAX - 1) * percent); 286 new_value = (int) ((double) (INT_MAX - 1) * percent);
306 287
307 if (new_sliderSize > (INT_MAX - 1)) 288 if (new_sliderSize > INT_MAX - 1)
308 new_sliderSize = INT_MAX - 1; 289 new_sliderSize = INT_MAX - 1;
309 if (new_sliderSize < 1) 290 if (new_sliderSize < 1)
310 new_sliderSize = 1; 291 new_sliderSize = 1;
311 292
312 if (new_value > (INT_MAX - new_sliderSize)) 293 if (new_value > (INT_MAX - new_sliderSize))
313 new_value = INT_MAX - new_sliderSize; 294 new_value = INT_MAX - new_sliderSize;
314 else if (new_value < 1) 295 else if (new_value < 1)
315 new_value = 1; 296 new_value = 1;
316 297
317 if (new_sliderSize != widget_sliderSize || new_value != widget_val) 298 if (new_sliderSize != widget_sliderSize || new_value != widget_val)
318 XlwScrollBarSetValues (widget, new_value, new_sliderSize, 1, 1, False); 299 XlwScrollBarSetValues (widget, new_value, new_sliderSize, 1, 1, False);
319 } 300 }
320 } 301 }
421 xlw_destroy_instance (widget_instance* instance) 402 xlw_destroy_instance (widget_instance* instance)
422 { 403 {
423 if (instance->widget) 404 if (instance->widget)
424 XtDestroyWidget (instance->widget); 405 XtDestroyWidget (instance->widget);
425 } 406 }
426