clip folder bug on reload, expander user folder drag/drop segv, remove libfdk src...
[goodguy/history.git] / cinelerra-5.1 / guicast / bclistbox.C
index 31bcb1412cf40ad43ef64322f422c2413d0b2eaf..2dd4283c990fc325d4caf6edc68068c882a4b035 100644 (file)
@@ -2117,6 +2117,7 @@ int BC_ListBox::get_cursor_item(ArrayList<BC_ListBoxItem*> *data, int cursor_x,
                                    cursor_y < get_item_y(item) + get_item_h(item) ) {
 //printf("BC_ListBox::get_cursor_item %d %d %p\n", master_column, i, item);
                                        if( item_return ) (*item_return) = item;
+                                       if( expanded < 0 ) (*counter) = i;
                                        return (*counter);
                                }
 
@@ -2124,8 +2125,10 @@ int BC_ListBox::get_cursor_item(ArrayList<BC_ListBoxItem*> *data, int cursor_x,
                                if( item->sublist_active() ) {
                                        if( get_cursor_item(item->get_sublist(),
                                              cursor_x, cursor_y, item_return, counter,
-                                             item->get_expand()) >= 0 )
+                                             item->get_expand()) >= 0 ) {
+                                               if( expanded < 0 ) (*counter) = i;
                                                return (*counter);
+                                       }
                                }
                        }
                }
@@ -2136,13 +2139,20 @@ int BC_ListBox::get_cursor_item(ArrayList<BC_ListBoxItem*> *data, int cursor_x,
 }
 
 // short version
-int BC_ListBox::get_cursor_item()
+int BC_ListBox::get_cursor_item_no()
 {
        int rx, ry;
        gui->get_relative_cursor(rx, ry);
        return get_cursor_item(data, rx, ry, 0, 0);
 }
 
+int BC_ListBox::get_cursor_data_item_no(BC_ListBoxItem **item_return)
+{
+       int rx, ry;
+       gui->get_relative_cursor(rx, ry);
+       return get_cursor_item(data, rx, ry, item_return, 0, -1);
+}
+
 int BC_ListBox::repeat_event(int64_t duration)
 {
        switch( current_operation ) {
@@ -2725,7 +2735,7 @@ int BC_ListBox::button_release_event()
 //printf("BC_ListBox::button_release_event 10\n");
                current_operation = NO_OPERATION;
                if( gui ) {
-                       selection_number1 = selection_number = get_cursor_item();
+                       selection_number1 = selection_number = get_cursor_item_no();
 //printf("BC_ListBox::button_release_event %d %d\n", selection_number2, selection_number1);
                }