Changeset 8350
- Timestamp:
- 01/02/12 17:55:08 (4 months ago)
- Location:
- branches/e4fix/WINDOW
- Files:
-
- 3 modified
-
AW_window.cxx (modified) (10 diffs)
-
aw_common.hxx (modified) (1 diff)
-
aw_window.hxx (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/e4fix/WINDOW/AW_window.cxx
r8349 r8350 403 403 404 404 void AW_window::calculate_scrollbars() { 405 AW_screen_area scr een;406 this->_get_area_size(AW_MIDDLE_AREA, &screen);405 AW_screen_area scrollArea; 406 get_scrollarea_size(&scrollArea); 407 407 408 408 // HORIZONTAL … … 414 414 } 415 415 416 bool use_horizontal_bar = true; 417 const int scrolled_area_width = int(screen.r-left_indent_of_horizontal_scrollbar); 418 int slider_size_horizontal = scrolled_area_width; 416 bool use_horizontal_bar = true; 417 int slider_size_horizontal = scrollArea.r; 419 418 420 419 if (slider_size_horizontal < 1) slider_size_horizontal = 1; // ist der slider zu klein (<1) ? … … 434 433 } 435 434 // Anpassung fuer resize, wenn unbeschriebener Bereich vergroessert wird 436 if (-slider_pos_horizontal + get_scrolled_picture_width() < scrolled_area_width) { 437 if (use_horizontal_bar) { 438 slider_pos_horizontal = (int)(get_scrolled_picture_width() - scrolled_area_width); 439 } 440 else { 441 slider_pos_horizontal = 0; // slider nach ganz oben, da alles sichtbar 442 } 435 int max_slider_pos = (int)(get_scrolled_picture_width() - scrollArea.r); 436 if (slider_pos_horizontal>max_slider_pos) { 437 slider_pos_horizontal = use_horizontal_bar ? max_slider_pos : 0; 443 438 } 444 439 … … 458 453 } 459 454 460 bool use_vertical_bar = true; 461 const int scrolled_area_height = int(screen.b-top_indent_of_vertical_scrollbar-bottom_indent_of_vertical_scrollbar); 462 int slider_size_vertical = scrolled_area_height; 455 bool use_vertical_bar = true; 456 int slider_size_vertical = scrollArea.b; 463 457 464 458 if (slider_size_vertical < 1) slider_size_vertical = 1; … … 478 472 } 479 473 // Anpassung fuer resize, wenn unbeschriebener Bereich vergroessert wird 480 if (-slider_pos_vertical + get_scrolled_picture_height() < scrolled_area_height) { 481 if (use_vertical_bar) { 482 slider_pos_vertical = (int)(get_scrolled_picture_height() - scrolled_area_height); 483 } 484 else { 485 slider_pos_vertical = 0; // slider nach ganz oben, da alles sichtbar 486 } 487 } 474 int max_slider_pos = (int)(get_scrolled_picture_height() - scrollArea.b); 475 if (slider_pos_vertical>max_slider_pos) { 476 slider_pos_vertical = use_vertical_bar ? max_slider_pos : 0; 477 } 478 488 479 XtVaSetValues(p_w->scroll_bar_vertical, XmNsliderSize, 1, NULL); 489 480 XtVaSetValues(p_w->scroll_bar_vertical, XmNmaximum, slider_max, NULL); … … 495 486 496 487 void AW_window::set_vertical_scrollbar_position(int position) { 488 #if defined(DEBUG) 489 fprintf(stderr, "set_vertical_scrollbar_position to %i\n", position); 490 #endif 491 // @@@ test and constrain against limits 497 492 slider_pos_vertical = position; 498 493 XtVaSetValues(p_w->scroll_bar_vertical, XmNvalue, position, NULL); … … 500 495 501 496 void AW_window::set_horizontal_scrollbar_position(int position) { 497 #if defined(DEBUG) 498 fprintf(stderr, "set_horizontal_scrollbar_position to %i\n", position); 499 #endif 500 // @@@ test and constrain against limits 502 501 slider_pos_horizontal = position; 503 502 XtVaSetValues(p_w->scroll_bar_horizontal, XmNvalue, position, NULL); … … 1440 1439 } 1441 1440 1441 void AW_window::get_scrollarea_size(AW_screen_area *square) { 1442 _get_area_size(AW_MIDDLE_AREA, square); 1443 square->r -= left_indent_of_horizontal_scrollbar; 1444 square->b -= top_indent_of_vertical_scrollbar; 1445 } 1446 1442 1447 void AW_window::update_scrollbar_settings_from_awars(AW_orientation orientation) { 1443 AW_screen_area scr een;1444 _get_area_size(AW_MIDDLE_AREA, &screen);1448 AW_screen_area scrolled; 1449 get_scrollarea_size(&scrolled); 1445 1450 1446 1451 // @@@ DRY awar code 1447 1452 1448 1453 char buffer[200]; 1449 1454 if (orientation == AW_HORIZONTAL) { 1450 1455 sprintf(buffer, "window/%s/horizontal_page_increment", window_defaults_name); 1451 XtVaSetValues(p_w->scroll_bar_horizontal, XmNpageIncrement, (int)( (screen.r-left_indent_of_horizontal_scrollbar)*(get_root()->awar(buffer)->read_int()*0.01)), NULL);1456 XtVaSetValues(p_w->scroll_bar_horizontal, XmNpageIncrement, (int)(scrolled.r*(get_root()->awar(buffer)->read_int()*0.01)), NULL); 1452 1457 1453 1458 sprintf(buffer, "window/%s/scroll_width_horizontal", window_defaults_name); … … 1459 1464 else { 1460 1465 sprintf(buffer, "window/%s/vertical_page_increment", window_defaults_name); 1461 XtVaSetValues(p_w->scroll_bar_vertical, XmNpageIncrement, (int)( (screen.b-top_indent_of_vertical_scrollbar-bottom_indent_of_vertical_scrollbar)*(get_root()->awar(buffer)->read_int()*0.01)), NULL);1466 XtVaSetValues(p_w->scroll_bar_vertical, XmNpageIncrement, (int)(scrolled.b*(get_root()->awar(buffer)->read_int()*0.01)), NULL); 1462 1467 1463 1468 sprintf(buffer, "window/%s/scroll_width_vertical", window_defaults_name); … … 2483 2488 } 2484 2489 2485 void AW_window::set_vertical_scrollbar_bottom_indent(int indent) {2486 XtVaSetValues(p_w->scroll_bar_vertical, XmNbottomOffset, (int)(3+indent), NULL);2487 bottom_indent_of_vertical_scrollbar = indent;2488 }2489 2490 2490 void AW_root::apply_sensitivity(AW_active mask) { 2491 2491 aw_assert(legal_mask(mask)); -
branches/e4fix/WINDOW/aw_common.hxx
r7669 r8350 249 249 // set clipping coordinates 250 250 screen = screen_; 251 aw_assert(screen.t == 0 && screen.l == 0); 251 252 } 252 253 -
branches/e4fix/WINDOW/aw_window.hxx
r8349 r8350 213 213 214 214 bool expose_callback_added; 215 215 216 int left_indent_of_horizontal_scrollbar; 217 int top_indent_of_vertical_scrollbar; 218 216 219 void all_menus_created() const; 217 220 void create_toggle(const char *var_name, aw_toggle_data *tdata); … … 286 289 287 290 AW_color_idx alloc_named_data_color(int colnum, char *colorname); 288 void _get_area_size(AW_area area, AW_screen_area *square); 289 int label_widget(void *wgt, AW_label str, char *mnemonic=0, int width = 0, int alignment = 0); 291 292 void _get_area_size(AW_area area, AW_screen_area *square); 293 void get_scrollarea_size(AW_screen_area *square); 294 295 int label_widget(void *wgt, AW_label str, char *mnemonic=0, int width = 0, int alignment = 0); 290 296 291 297 // ------------------------------ … … 297 303 bool window_is_shown; 298 304 299 int left_indent_of_horizontal_scrollbar;300 int top_indent_of_vertical_scrollbar;301 int bottom_indent_of_vertical_scrollbar;302 305 int slider_pos_vertical; 303 306 int slider_pos_horizontal; … … 305 308 306 309 AW_screen_area *picture; // the result of tell scrolled 307 // picture size310 // picture size 308 311 309 312 // -------------------------------- … … 391 394 void set_horizontal_scrollbar_left_indent(int indent); 392 395 void set_vertical_scrollbar_top_indent(int indent); 393 void set_vertical_scrollbar_bottom_indent(int indent);394 396 395 397 void update_scrollbar_settings_from_awars(AW_orientation orientation);
