int click_knowledge_handler(window_info *win, int mx, int my, Uint32 flags) { int x,y,idx; Uint8 str[3]; x= mx; y= my; if(x > win->len_x-win->box_size) return 0; if(y > booklist_y_len) return 0; if(flags&ELW_WHEEL_UP) { vscrollbar_scroll_up(win->window_id, knowledge_scroll_id); return 1; } else if(flags&ELW_WHEEL_DOWN) { vscrollbar_scroll_down(win->window_id, knowledge_scroll_id); return 1; } else { selected_book = -1; x = (x < (win->len_x-win->box_size)/2) ?0 :1; y/=booklist_y_step; idx = x + 2 *(y + vscrollbar_get_pos (win->window_id, knowledge_scroll_id)); if(idx < knowledge_count) { str[0] = GET_KNOWLEDGE_INFO; *(Uint16 *)(str+1) = SDL_SwapLE16((short)idx); my_tcp_send(my_socket,str,3); raw_knowledge_string[0] = '\0'; // Check if we display the book image and label knowledge_book_id = idx; if (knowledge_list[idx].present && knowledge_list[idx].has_book) { widget_unset_flags (win->window_id, knowledge_book_image_id, WIDGET_DISABLED); widget_unset_flags (win->window_id, knowledge_book_label_id, WIDGET_DISABLED); } else { widget_set_flags(win->window_id, knowledge_book_image_id, WIDGET_DISABLED); widget_set_flags(win->window_id, knowledge_book_label_id, WIDGET_DISABLED); } selected_book = idx; } do_click_sound(); } return 1; }
static void update_note_button_scrollbar(int nr) { int max_nr_rows = note_button_scroll_height / (note_button_height + note_button_y_space); int nr_rows = (nr_notes+1) / 2; if (nr_rows <= max_nr_rows) { widget_set_flags (main_note_tab_id, note_button_scroll_id, WIDGET_INVISIBLE|WIDGET_DISABLED); vscrollbar_set_bar_len (main_note_tab_id, note_button_scroll_id, 0); scroll_to_note_button (0); } else { widget_unset_flags (main_note_tab_id, note_button_scroll_id, WIDGET_INVISIBLE|WIDGET_DISABLED); vscrollbar_set_bar_len (main_note_tab_id, note_button_scroll_id, nr_rows - max_nr_rows); scroll_to_note_button (nr); } }
void note_button_set_pos (int id) { int scroll_pos = vscrollbar_get_pos (main_note_tab_id, note_button_scroll_id); int max_nr_rows = note_button_scroll_height / (note_button_height + note_button_y_space); int row = id / 2 - scroll_pos; if (row < 0 || row >= max_nr_rows) { widget_set_flags (main_note_tab_id, note_list[id].button_id, WIDGET_INVISIBLE); } else { int x = 5 + (id % 2) * (note_button_width + note_button_x_space); int y = 50 + (note_button_height + note_button_y_space) * row; widget_unset_flags (main_note_tab_id, note_list[id].button_id, WIDGET_INVISIBLE); widget_move (main_note_tab_id, note_list[id].button_id, x, y); } }