X-Git-Url: https://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fguicast%2Fbclistbox.C;h=fb57b17de864b2999c7b5500ed35410f0cb2d5a0;hb=0ac6a1397cf8ee19cf75f3fe893c27e9f4fc0ea5;hp=394daac60607dd1bf6e82274408076b8fd0be071;hpb=61d95f04b83c2f7f1fa6b44ff64ed9c83a7d8abb;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/guicast/bclistbox.C b/cinelerra-5.1/guicast/bclistbox.C index 394daac6..fb57b17d 100644 --- a/cinelerra-5.1/guicast/bclistbox.C +++ b/cinelerra-5.1/guicast/bclistbox.C @@ -3676,9 +3676,7 @@ int BC_ListBox::drag_start_event() switch(current_operation) { case SELECT: - if(gui && - gui->is_event_win() && - allow_drag) + if( gui && gui->is_event_win() && allow_drag ) { BC_ListBoxItem *item_return = 0; selection_number = get_cursor_item(data, @@ -3688,33 +3686,32 @@ int BC_ListBox::drag_start_event() if(selection_number >= 0) { - - if (item_return->icon_vframe) - { + int cx, cy; + get_abs_cursor_xy(cx, cy); + if( item_return->icon_vframe ) { + cx -= item_return->icon_vframe->get_w() / 2, + cy -= item_return->icon_vframe->get_h() / 2; drag_popup = new BC_DragWindow(this, - item_return->icon_vframe /*, - get_abs_cursor_x(0) - item_return->icon_vframe->get_w() / 2, - get_abs_cursor_y(0) - item_return->icon_vframe->get_h() / 2 */); + item_return->icon_vframe, cx, cy); } else // this probably works not! - if (item_return->icon) - { + if( item_return->icon ) { + cx -= item_return->icon->get_w() / 2, + cy -= item_return->icon->get_h() / 2; drag_popup = new BC_DragWindow(this, - item_return->icon /*, - get_abs_cursor_x(0) - item_return->icon->get_w() / 2, - get_abs_cursor_y(0) - item_return->icon->get_h() / 2 */); + item_return->icon, cx, cy); } - else - { + else { + cx -= drag_icon_vframe->get_w() / 2, + cy -= drag_icon_vframe->get_h() / 2; drag_popup = new BC_DragWindow(this, - drag_icon_vframe /*, - get_abs_cursor_x(0) - drag_icon_vframe->get_w() / 2, - get_abs_cursor_y(0) - drag_icon_vframe->get_h() / 2 */); + drag_icon_vframe, cx, cy); } - current_operation = DRAG_ITEM; - set_repeat(get_resources()->scroll_repeat); +// require shift down for scrolling + if( allow_drag < 0 && shift_down() ) + set_repeat(get_resources()->scroll_repeat); return 1; } } @@ -3723,10 +3720,12 @@ int BC_ListBox::drag_start_event() case COLUMN_DN: if(gui && gui->is_event_win() && allow_drag_column) { + int cx, cy; + get_abs_cursor_xy(cx, cy); + cx -= drag_column_icon_vframe->get_w() / 2, + cy -= drag_column_icon_vframe->get_h() / 2; drag_popup = new BC_DragWindow(this, - drag_column_icon_vframe /*, - get_abs_cursor_x(0) - drag_column_icon_vframe->get_w() / 2, - get_abs_cursor_y(0) - drag_column_icon_vframe->get_h() / 2 */); + drag_column_icon_vframe, cx, cy); dragged_title = highlighted_title; current_operation = COLUMN_DRAG; draw_titles(1); @@ -3769,7 +3768,6 @@ int BC_ListBox::drag_motion_event() } return drag_popup->cursor_motion_event(); - break; } case COLUMN_DRAG: @@ -3781,7 +3779,6 @@ int BC_ListBox::drag_motion_event() draw_titles(1); } return drag_popup->cursor_motion_event(); - break; } } return 0; @@ -3806,16 +3803,10 @@ int BC_ListBox::drag_stop_event() { reposition_item(data, selection_number, - top_level->cursor_x + - drag_popup->get_offset_x() - - LISTBOX_MARGIN - - 2 + - xposition, - top_level->cursor_y + - drag_popup->get_offset_y() - - LISTBOX_MARGIN - - 2 + - yposition); + top_level->cursor_x + drag_popup->get_offset_x() - + LISTBOX_MARGIN - 2 + xposition, + top_level->cursor_y + drag_popup->get_offset_y() - + LISTBOX_MARGIN - 2 + yposition); } else // Move rows @@ -4386,7 +4377,7 @@ void BC_ListBox::draw_text_recursive(ArrayList *data, gui->set_color(BLACK); int xx = x + column_width-1; gui->draw_line(x, y, xx, y); - int hh = row_height; + int hh = h; if( display_format == LISTBOX_ICON_LIST ) { int ih = get_icon_h(item); if( ih > hh ) hh = ih; @@ -4505,43 +4496,39 @@ void BC_ListBox::draw_title(int number) image_number = 2; } - int column_offset = get_column_offset(number) - xposition + LISTBOX_BORDER; - int column_width = get_column_width(number, 1); gui->draw_3segmenth(get_column_offset(number) - xposition + LISTBOX_BORDER, LISTBOX_BORDER, get_column_width(number, 1) + get_resources()->listbox_title_overlap, column_bg[image_number]); -// Column title sort order - if(number == sort_column) - { - BC_Pixmap *src; - if(sort_order == SORT_ASCENDING) - src = column_sort_dn; - else - src = column_sort_up; + int title_x = -xposition + get_column_offset(number) + + LISTBOX_MARGIN + LISTBOX_BORDER; + title_x += get_resources()->listbox_title_margin; - int x = column_offset + - column_width - - LISTBOX_BORDER; - if(x > items_w) x = items_w; - x -= 5 + src->get_w(); + gui->set_color(get_resources()->listbox_title_color); + gui->draw_text(title_x, + LISTBOX_MARGIN + LISTBOX_BORDER + get_text_ascent(MEDIUMFONT), + column_titles[number]); + +// Column sort order + if(number == sort_column) { + BC_Pixmap *src = sort_order == SORT_ASCENDING ? + column_sort_dn : column_sort_up; + +// int column_offset = get_column_offset(number) - xposition + LISTBOX_BORDER; +// int column_width = get_column_width(number, 1); +// int toggle_x = column_offset + column_width - LISTBOX_BORDER; +// if( toggle_x > items_w ) toggle_x = items_w; +// toggle_x -= 5 + src->get_w(); + + int x = title_x + + get_text_width(MEDIUMFONT, column_titles[number]) + + LISTBOX_MARGIN; + gui->draw_pixmap(src, x, title_h / 2 - src->get_h() / 2 + LISTBOX_BORDER); } - - - int x = -xposition + - get_column_offset(number) + - LISTBOX_MARGIN + - LISTBOX_BORDER; - x += get_resources()->listbox_title_margin; - - gui->set_color(get_resources()->listbox_title_color); - gui->draw_text(x, - LISTBOX_MARGIN + LISTBOX_BORDER + get_text_ascent(MEDIUMFONT), - _(column_titles[number])); } int BC_ListBox::draw_titles(int flash)