Ejemplo n.º 1
0
static gchar *
ev_page_accessible_get_selection (AtkText *text,
				  gint     selection_num,
				  gint    *start_pos,
				  gint    *end_pos)
{
	EvPageAccessible *self = EV_PAGE_ACCESSIBLE (text);
	EvView *view = ev_page_accessible_get_view (self);
	gchar *selected_text = NULL;
	gchar *normalized_text = NULL;
	GList *l;

	*start_pos = -1;
	*end_pos = -1;

	if (selection_num != 0)
		return NULL;

	if (!EV_IS_SELECTION (view->document) || !view->selection_info.selections)
		return NULL;

	for (l = view->selection_info.selections; l != NULL; l = l->next) {
		EvViewSelection *selection = (EvViewSelection *)l->data;
		gint start, end;

		if (selection->page != self->priv->page)
			continue;

		if (get_selection_bounds (view, selection, &start, &end) && start != end) {
			EvPage *page;

			page = ev_document_get_page (view->document, selection->page);

			ev_document_doc_mutex_lock ();
			selected_text = ev_selection_get_selected_text (EV_SELECTION (view->document),
									page,
									selection->style,
									&(selection->rect));

			ev_document_doc_mutex_unlock ();

			g_object_unref (page);

			*start_pos = start;
			*end_pos = end;
		}

		break;
	}

	if (selected_text) {
		normalized_text = g_utf8_normalize (selected_text, -1, G_NORMALIZE_NFKC);
		g_free (selected_text);
	}

	return normalized_text;
}
Ejemplo n.º 2
0
bool CBackgroundImage::SetExtentsSel(){
	vec3_t mins,maxs;

	if ( !get_selection_bounds( mins,maxs ) ) {
		return false;
	}

	if ( ( (int)mins[m_ix] == (int)maxs[m_ix] ) ||
		 ( (int)mins[m_iy] == (int)maxs[m_iy] ) ) {
		Syn_Printf( MSG_PREFIX "tiny selection\n" );
		return false;
	}

	m_xmin = mins[m_ix];
	m_ymin = mins[m_iy];
	m_xmax = maxs[m_ix];
	m_ymax = maxs[m_iy];

	g_FuncTable.m_pfnSysUpdateWindows( W_XY );

	return true;
}