void nsatari_search_perform(struct s_search_form_session *s, OBJECT *obj, search_flags_t f) { bool fwd; search_flags_t flags = f; assert(s!=null); assert(input_window->browser->bw == s->bw); if(search_session_compare(s, obj)){ browser_window_search_destroy_context(s->bw); apply_form(obj, &s->state); } else { } /* get search direction manually: */ if ( (f&SEARCH_FLAG_FORWARDS) != 0 ) s->state.flags |= SEARCH_FLAG_FORWARDS; else s->state.flags &= (~SEARCH_FLAG_FORWARDS); if( browser_window_search_verify_new(s->bw, &nsatari_search_callbacks, s) ){ LOG(("searching for: %s\n", gemtk_obj_get_text(obj, TOOLBAR_TB_SRCH))); browser_window_search_step(s->bw, s->state.flags, gemtk_obj_get_text(obj, TOOLBAR_TB_SRCH)); } }
/** checks for search parameters changes */ static bool search_session_compare(struct s_search_form_session *s, OBJECT *obj) { bool check; uint32_t flags_old; uint32_t flags_mask = SEARCH_FLAG_SHOWALL | SEARCH_FLAG_CASE_SENSITIVE; struct s_search_form_state cur; assert(s != NULL && obj != NULL); flags_old = s->state.flags; apply_form(obj, &cur); if ((cur.flags&flags_mask) != (flags_old&flags_mask)) { return( true ); } char * cstr; cstr = gemtk_obj_get_text(obj, TOOLBAR_TB_SRCH); if (cstr != NULL){ if (strcmp(cstr, (char*)&s->state.text) != 0) { return (true); } } return( false ); }
struct s_search_form_session * nsatari_search_session_create(OBJECT * obj, struct browser_window *bw) { struct s_search_form_session *sfs; sfs = calloc(1, sizeof(struct s_search_form_session)); assert(obj); assert(sfs); sfs->bw = bw; apply_form(obj, &sfs->state); browser_window_search_destroy_context(bw); return(sfs); }
struct s_search_form_session * nsatari_search_session_create(OBJECT * obj, struct gui_window *gw) { struct s_search_form_session *sfs; sfs = calloc(1, sizeof(struct s_search_form_session)); assert(obj); assert(sfs); sfs->g = gw; apply_form(obj, &sfs->state); browser_window_search_clear(gw->browser->bw); return(sfs); }
void nsatari_search_perform(struct s_search_form_session *s, OBJECT *obj, search_flags_t f) { assert(s!=null); assert(input_window->browser->bw == s->g->browser->bw); if (search_session_compare(s, obj)) { browser_window_search_clear(s->g->browser->bw); apply_form(obj, &s->state); } /* get search direction manually: */ if ( (f&SEARCH_FLAG_FORWARDS) != 0 ) { s->state.flags |= SEARCH_FLAG_FORWARDS; } else { s->state.flags &= (~SEARCH_FLAG_FORWARDS); } browser_window_search(s->g->browser->bw, s, s->state.flags, gemtk_obj_get_text(obj, TOOLBAR_TB_SRCH)); }