Страниц: [1]
  Печать  
Автор Тема: PtList, ItemSelection, Multiple  (Прочитано 4607 раз)
Zaca
Jr. Member
**
Offline Offline

Сообщений: 64



Просмотр профиля
« : Сентября 13, 2013, 03:55:18 pm »

Добрый вечер!
Во-первых с праздником))

Во вторых - вопрос:

Использую PtList (Multiple)
на ItemSelection вешаю функцию

PtListCallback_t* cbi=(PtListCallback_t *)cbinfo->cbdata;
Где cbi->item_pos замечательно при селектировании выводит номер нажатой строки.

Но. Я заполняю глоб массив, значения которого используются в thread-е.

А при каждом выделении из списка, эта функция (почему-то) вызывается 2 раза.

Соответственно не получается заполнить массив (ну я проверяю если эл-мент массива == 0, ставлю 1 и наоборот).

Двойной вызов - фигня на выходе.

Простите за сумбурное повествование, но никак не думала, что столкнусь с такой проблемой (почему 2 раза вызывается?) на уже проверенном и 100 раз использованном List-е (правда работала с сингл).

Спасибо.
Записан
ekselents
Участник
*
Offline Offline

Сообщений: 4


Просмотр профиля
« Ответ #1 : Сентября 13, 2013, 04:23:30 pm »

Цитировать
Handling multiple selections

Multiple selection modes, including extended selection, let you select several items at once. When the selection callback is invoked, more than one item may have been added to the set of selected items.

The data passed to the callback function uses these members to identify the complete set of selected items:

    sel_item_count — the number of currently selected items
    sel_array — an array of indexes for each currently selected item.
Цитировать
reason_subtype
    This value depends on the value of Pt_ARG_SELECTION_MODE. In general, the value of reason_subtype is:

        Pt_LIST_SELECTION_FINAL when the mouse button is released inside the widget or the Enter is pressed (selection is accepted).
        Pt_LIST_SELECTION_CANCEL when the mouse button is released outside the widget (previous state restored).
        Pt_LIST_SELECTION_BROWSE when the mouse button is held down, the space bar is used to select an item, or arrow keys are being used to scroll through the list (a selection is in the process of being made).

Код:
PtListCallback_t* cbi=(PtListCallback_t *)cbinfo->cbdata;
..
if ( cbinfo->reason_subtype == Pt_LIST_SELECTION_FINAL ) {
..
...cbi->sel_array...
...cbi->sel_item_count...
}
Записан
Zaca
Jr. Member
**
Offline Offline

Сообщений: 64



Просмотр профиля
« Ответ #2 : Сентября 16, 2013, 08:39:02 am »

Спасибо за помощь!
Записан
Страниц: [1]
  Печать  
 
Перейти в: