static EWL_CALLBACK_DEFN(fg_mouse_down) { Ewler_Widget *ewler_w = user_data; Ewl_Embed *embed; Ewl_Event_Mouse_Down *ev = ev_data; bool multi; if( !ewler_w->selectable || widget_under_cursor ) return; widget_under_cursor = true; ewler_w->mouse.state |= EWLER_WIDGET_MOUSE_DOWN; ewler_w->mouse.button = ev->button; ewler_w->mouse.state_x = ev->x; ewler_w->mouse.state_y = ev->y; ewler_w->corners.x = CURRENT_X(w); ewler_w->corners.y = CURRENT_Y(w); ewler_w->corners.u = CURRENT_X(w) + CURRENT_W(w); ewler_w->corners.v = CURRENT_Y(w) + CURRENT_H(w); if( ev->modifiers & (EWL_KEY_MODIFIER_CTRL | EWL_KEY_MODIFIER_SHIFT) ) multi = true; else multi = false; if( ev->button == 1 && multi ) { form_toggle(ewler_w); } else if( ev->button == 1 || (!multi && !ecore_list_count(form_selected())) ) { Ecore_List *selected; selected = form_selected(); if( selected && (ecore_list_count(selected) != 1 || ecore_list_first_goto(selected) != ewler_w) ) { form_deselect_all(); form_select(ewler_w); } } IF_FREE(ewler_w->source); embed = ewl_embed_widget_find(w); evas_event_feed_mouse_down(embed->evas, ev->button, EVAS_BUTTON_NONE, 0, NULL); }
/** * @param pdf: the pdf to change the scale * @return 1 if the text is found, 0 otherwise. * @brief Set the case of the search * * Start the search of text in the @p pdf document. The * text to search should have been set by ewl_pdf_search_text_set(). * It is @c NULL by default. The first page from which the search * starts is set by ewl_pdf_search_first_page_set(). It is 0 by default. * The search can be case sensitive or not. It is set by * ewl_pdf_search_is_case_sensitive() and it is case insensitive by * default. * * Several call of that function can be done to search several occurences * of the text in the document. When a text is found, * epdf_page_page_set() is called. */ int ewl_pdf_search_next(Ewl_Pdf *pdf) { DENTER_FUNCTION(DLEVEL_STABLE); DCHECK_PARAM_PTR_RET(pdf, FALSE); DCHECK_TYPE_RET(pdf, EWL_PDF_TYPE, FALSE); if (!pdf->search.text) DRETURN_INT(FALSE, DLEVEL_STABLE); if (!pdf->search.o) { Ewl_Embed *emb; emb = ewl_embed_widget_find(EWL_WIDGET(pdf)); pdf->search.o = evas_object_rectangle_add(emb->canvas); if (!pdf->search.o) DRETURN_INT(FALSE, DLEVEL_STABLE); evas_object_color_set(pdf->search.o, 0, 128, 0, 128); evas_object_hide(pdf->search.o); } next_page: /* no list, we search one */ while (!pdf->search.list && pdf->search.page < epdf_document_page_count_get(pdf->pdf_document)) { Epdf_Page *page; pdf->search.page++; printf("page : %d\n", pdf->search.page); epdf_page_page_set(pdf->pdf_page, pdf->search.page); pdf->search.list = epdf_page_text_find(page, pdf->search.text, pdf->search.is_case_sensitive); if (pdf->search.list) ecore_list_first_goto(pdf->search.list); epdf_page_delete(page); } /* an already existing list or a newly one */ if (pdf->search.list) { Epdf_Rectangle *rect; if ((rect = (Epdf_Rectangle *)ecore_list_next(pdf->search.list))) { if (pdf->search.page != epdf_page_page_get(pdf->pdf_page)) { ewl_pdf_page_set(pdf, pdf->search.page); ewl_callback_call(EWL_WIDGET(pdf), EWL_CALLBACK_REVEAL); } evas_object_move(pdf->search.o, CURRENT_X(EWL_WIDGET(pdf)) + round(rect->x1 - 1), CURRENT_Y(EWL_WIDGET(pdf)) + round(rect->y1 - 1)); evas_object_resize(pdf->search.o, round(rect->x2 - rect->x1 + 1), round(rect->y2 - rect->y1)); if (!evas_object_visible_get(pdf->search.o)) evas_object_show(pdf->search.o); /* we leave... */ DRETURN_INT(TRUE, DLEVEL_STABLE); } else { /* no more word to find. We destroy the list */ ecore_list_destroy(pdf->search.list); pdf->search.list = NULL; /* we search a new one */ printf("page0 : %d\n", pdf->search.page); goto next_page; } } evas_object_hide(pdf->search.o); if (pdf->search.is_circular) { pdf->search.page = -1; DRETURN_INT(TRUE, DLEVEL_STABLE); } else DRETURN_INT(FALSE, DLEVEL_STABLE); }
static EWL_CALLBACK_DEFN(fg_mouse_move) { Ewler_Widget *ewler_w = user_data; Ewl_Embed *embed; Ewl_Event_Mouse_Move *ev = ev_data; if( ewler_w->mouse.state & EWLER_WIDGET_MOUSE_DOWN && ewler_w->mouse.button == 1 ) { int dx = ev->x - ewler_w->mouse.state_x; int dy = ev->y - ewler_w->mouse.state_y; if( ewler_w->source ) { int *x, *y, *u, *v; x = &ewler_w->corners.x; y = &ewler_w->corners.y; u = &ewler_w->corners.u; v = &ewler_w->corners.v; if( strstr( ewler_w->source, "left" ) ) *x += dx; if( strstr( ewler_w->source, "right" ) ) *u += dx; if( strstr( ewler_w->source, "top" ) ) { if( ev->modifiers & EWL_KEY_MODIFIER_CTRL ) *y = *v - *u + *x; else *y += dy; } if( strstr( ewler_w->source, "bottom" ) ) { if( ev->modifiers & EWL_KEY_MODIFIER_CTRL ) *v = *y + *u - *x; else *v += dy; } if( *u < *x ) *u = *x; if( *v < *y ) *v = *y; ewl_object_preferred_inner_size_set(EWL_OBJECT(ewler_w->fg), *u - *x, *v - *y); ewl_object_minimum_size_set(EWL_OBJECT(ewler_w->fg), *u - *x, *v - *y); ewl_object_geometry_request(EWL_OBJECT(ewler_w->fg), *x, *y, *u - *x, *v - *y); ewl_object_preferred_inner_size_set(EWL_OBJECT(ewler_w->bg), *u - *x, *v - *y); ewl_object_minimum_size_set(EWL_OBJECT(ewler_w->fg), *u - *x, *v - *y); ewl_object_geometry_request(EWL_OBJECT(ewler_w->fg), *x, *y, *u - *x, *v - *y); ewl_object_preferred_inner_size_set(EWL_OBJECT(ewler_w->w), *u - *x, *v - *y); ewl_object_minimum_size_set(EWL_OBJECT(ewler_w->w), *u - *x, *v - *y); ewl_object_geometry_request(EWL_OBJECT(ewler_w->w), *x, *y, *u - *x, *v - *y); ewler_w->mouse.state_x = ev->x; ewler_w->mouse.state_y = ev->y; } else { Ecore_List *selected; selected = form_selected(); if( selected ) { ecore_list_first_goto(selected); while( (ewler_w = ecore_list_next(selected)) ) { ewl_object_position_request(EWL_OBJECT(ewler_w->bg), CURRENT_X(ewler_w->bg) + dx, CURRENT_Y(ewler_w->bg) + dy); ewl_object_position_request(EWL_OBJECT(ewler_w->fg), CURRENT_X(ewler_w->fg) + dx, CURRENT_Y(ewler_w->fg) + dy); ewl_object_position_request(EWL_OBJECT(ewler_w->w), CURRENT_X(ewler_w->w) + dx, CURRENT_Y(ewler_w->w) + dy); ewler_w->mouse.state_x = ev->x; ewler_w->mouse.state_y = ev->y; } } } } embed = ewl_embed_widget_find(w); if( embed ) evas_event_feed_mouse_move(embed->evas, ev->x, ev->y, 0, NULL); }