fix segv in neophyte theme about_bg
[goodguy/history.git] / cinelerra-5.1 / guicast / bclistbox.C
index a6946530ffb1638f2cfe0690589d7653dcd44462..d983c7ac8cc22cd3526b2a875e3a06ed47f30296 100644 (file)
@@ -2076,6 +2076,7 @@ int BC_ListBox::get_cursor_item(ArrayList<BC_ListBoxItem*> *data, int cursor_x,
 // Icons are not treed
        switch( display_format ) {
        case LISTBOX_ICONS:
+       case LISTBOX_ICONS_PACKED:
        case LISTBOX_ICON_LIST: {
                for( int j=data[master_column].total; --j>=0; ) {
                        int icon_x, icon_y, icon_w, icon_h;
@@ -2092,8 +2093,7 @@ int BC_ListBox::get_cursor_item(ArrayList<BC_ListBoxItem*> *data, int cursor_x,
                                return j;
                        }
                }
-               if( display_format == LISTBOX_ICONS ) return -1;
-               } // fall through
+               return -1; }
        case LISTBOX_TEXT:
                if( !gui ) break;
 // Text is treed
@@ -2135,6 +2135,14 @@ int BC_ListBox::get_cursor_item(ArrayList<BC_ListBoxItem*> *data, int cursor_x,
        return -1;
 }
 
+// short version
+int BC_ListBox::get_cursor_item()
+{
+       int rx, ry;
+       gui->get_relative_cursor(rx, ry);
+       return get_cursor_item(data, rx, ry, 0, 0);
+}
+
 int BC_ListBox::repeat_event(int64_t duration)
 {
        switch( current_operation ) {
@@ -2695,7 +2703,6 @@ int BC_ListBox::button_press_event()
 int BC_ListBox::button_release_event()
 {
        int result = 0;
-       int cursor_x, cursor_y;
        int do_event = 0;
        new_value = 0;
        unset_scroll_repeat();
@@ -2718,11 +2725,7 @@ int BC_ListBox::button_release_event()
 //printf("BC_ListBox::button_release_event 10\n");
                current_operation = NO_OPERATION;
                if( gui ) {
-                       translate_coordinates(top_level->event_win, gui->win,
-                               gui->get_cursor_x(), gui->get_cursor_y(),
-                               &cursor_x, &cursor_y);
-                       selection_number1 = selection_number =
-                               get_cursor_item(data, cursor_x, cursor_y);
+                       selection_number1 = selection_number = get_cursor_item();
 //printf("BC_ListBox::button_release_event %d %d\n", selection_number2, selection_number1);
                }