bclistbox selection segv + other minor fixes
[goodguy/history.git] / cinelerra-5.1 / guicast / bclistbox.C
index b48847ba14971e5315479764a856a48573531008..6468b89fa4537bbfe9fb24ddbdc59252e62f3b2c 100644 (file)
@@ -389,13 +389,9 @@ BC_ListBox::BC_ListBox(int x,
        popup_w = w;
        popup_h = h;
 
-       for(int i = 0; i < 3; i++)
-       {
-               button_images[i] = 0;
-               column_bg[i] = 0;
-       }
-       for(int i = 0; i < 5; i++)
-               toggle_images[i] = 0;
+       for(int i = 0; i < 3; i++) column_bg[i] = 0;
+       for(int i = 0; i < 4; i++) button_images[i] = 0;
+       for(int i = 0; i < 5; i++) toggle_images[i] = 0;
 
        column_sort_up = 0;
        column_sort_dn = 0;
@@ -447,13 +443,9 @@ BC_ListBox::~BC_ListBox()
        if(bg_pixmap) delete bg_pixmap;
        if(xscrollbar) delete xscrollbar;
        if(yscrollbar) delete yscrollbar;
-       for(int i = 0; i < 3; i++)
-       {
-               if(button_images[i]) delete button_images[i];
-               if(column_bg[i]) delete column_bg[i];
-       }
-       for(int i = 0; i < 5; i++)
-               if(toggle_images[i]) delete toggle_images[i];
+       for(int i = 0; i < 3; i++) delete column_bg[i];
+       for(int i = 0; i < 4; i++) delete button_images[i];
+       for(int i = 0; i < 5; i++) delete toggle_images[i];
        if(column_sort_up) delete column_sort_up;
        if(column_sort_dn) delete column_sort_dn;
 
@@ -550,7 +542,7 @@ int BC_ListBox::initialize()
        {
                if(use_button)
                {
-                       for( volatile int i = 0; i < 4; ++i ) // volatile due to cplr bug
+                       for( int i = 0; i < 4; ++i )
                        {
                                button_images[i] = new BC_Pixmap(parent_window,
                                        BC_WindowBase::get_resources()->listbox_button[i],
@@ -3134,17 +3126,14 @@ int BC_ListBox::button_release_event()
 //printf("BC_ListBox::button_release_event 10\n");
                        unset_repeat(get_resources()->scroll_repeat);
                        current_operation = NO_OPERATION;
-                       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);
+                       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);
 //printf("BC_ListBox::button_release_event %d %d\n", selection_number2, selection_number1);
+                       }
 
                        if(is_popup)
                        {