comparison lwlib/lwlib-Xlw.c @ 80:1ce6082ce73f r20-0b90

Import from CVS: tag r20-0b90
author cvs
date Mon, 13 Aug 2007 09:06:37 +0200
parents c7528f8e288d
children 6b37e6ddd302
comparison
equal deleted inserted replaced
79:5b0a5bbffab6 80:1ce6082ce73f
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 }
284 XtNy, data->scrollbar_y, 266 XtNy, data->scrollbar_y,
285 XtNwidth, data->scrollbar_width, 267 XtNwidth, data->scrollbar_width,
286 XtNheight, data->scrollbar_height, 268 XtNheight, data->scrollbar_height,
287 0); 269 0);
288 270
289 /* Now the size the scrollbar's slider. */ 271 /* Now size the scrollbar's slider. */
290
291 XtVaGetValues (widget, 272 XtVaGetValues (widget,
292 XmNsliderSize, &widget_sliderSize, 273 XmNsliderSize, &widget_sliderSize,
293 XmNvalue, &widget_val, 274 XmNvalue, &widget_val,
294 0); 275 0);
295 276
296 percent = (double) data->slider_size / 277 percent = (double) data->slider_size /
297 (double) (data->maximum - data->minimum); 278 (double) (data->maximum - data->minimum);
298 percent = (percent > 1.0 ? 1.0 : percent); 279 percent = (percent > 1.0 ? 1.0 : percent);
301 percent = (double) (data->slider_position - data->minimum) / 282 percent = (double) (data->slider_position - data->minimum) /
302 (double) (data->maximum - data->minimum); 283 (double) (data->maximum - data->minimum);
303 percent = (percent > 1.0 ? 1.0 : percent); 284 percent = (percent > 1.0 ? 1.0 : percent);
304 new_value = (int) ((double) (INT_MAX - 1) * percent); 285 new_value = (int) ((double) (INT_MAX - 1) * percent);
305 286
306 if (new_sliderSize > (INT_MAX - 1)) 287 if (new_sliderSize > INT_MAX - 1)
307 new_sliderSize = INT_MAX - 1; 288 new_sliderSize = INT_MAX - 1;
308 if (new_sliderSize < 1) 289 if (new_sliderSize < 1)
309 new_sliderSize = 1; 290 new_sliderSize = 1;
310 291
311 if (new_value > (INT_MAX - new_sliderSize)) 292 if (new_value > (INT_MAX - new_sliderSize))
312 new_value = INT_MAX - new_sliderSize; 293 new_value = INT_MAX - new_sliderSize;
313 else if (new_value < 1) 294 else if (new_value < 1)
314 new_value = 1; 295 new_value = 1;
315 296
316 if (new_sliderSize != widget_sliderSize || new_value != widget_val) 297 if (new_sliderSize != widget_sliderSize || new_value != widget_val)
317 XlwScrollBarSetValues (widget, new_value, new_sliderSize, 1, 1, False); 298 XlwScrollBarSetValues (widget, new_value, new_sliderSize, 1, 1, False);
318 } 299 }
319 } 300 }
420 xlw_destroy_instance (widget_instance* instance) 401 xlw_destroy_instance (widget_instance* instance)
421 { 402 {
422 if (instance->widget) 403 if (instance->widget)
423 XtDestroyWidget (instance->widget); 404 XtDestroyWidget (instance->widget);
424 } 405 }
425