示例#1
0
void ro_gui_download_window_hide_caret(struct gui_download_window *dw)
{
	wimp_caret caret;
	os_error *error;

	error = xwimp_get_caret_position(&caret);
	if (error) {
		LOG("xwimp_get_caret_position: 0x%x : %s", error->errnum, error->errmess);
		ro_warn_user("WimpError", error->errmess);
	}
	else if (caret.w == dw->window) {
		error = xwimp_set_caret_position(dw->window, (wimp_i)-1, 0, 0, 1 << 25, -1);
		if (error) {
			LOG("xwimp_get_caret_position: 0x%x : %s", error->errnum, error->errmess);
			ro_warn_user("WimpError", error->errmess);
		}
	}
}
示例#2
0
void ro_gui_url_bar_set_url(struct url_bar *url_bar, const char *url,
		bool is_utf8, bool set_caret)
{
	wimp_caret	caret;
	os_error	*error;
	const char	*set_url;

	if (url_bar == NULL || url_bar->text_buffer == NULL)
		return;

	if (url_bar->text_icon == -1) {
		strncpy(url_bar->text_buffer, url, url_bar->text_size);
		return;
	}

	ro_gui_set_icon_string(url_bar->window, url_bar->text_icon,
			url, is_utf8);

	error = xwimp_get_caret_position(&caret);
	if (error) {
		LOG(("xwimp_get_caret_position: 0x%x: %s",
				error->errnum, error->errmess));
		warn_user("WimpError", error->errmess);
		return;
	}

	if (set_caret || (caret.w == url_bar->window &&
			caret.i == url_bar->text_icon)) {
		set_url = ro_gui_get_icon_string(url_bar->window,
				url_bar->text_icon);

		error = xwimp_set_caret_position(url_bar->window,
				url_bar->text_icon, 0, 0, -1, strlen(set_url));
		if (error) {
			LOG(("xwimp_set_caret_position: 0x%x: %s",
					error->errnum, error->errmess));
			warn_user("WimpError", error->errmess);
		}
	}
}
示例#3
0
bool ro_gui_url_bar_icon_resize(struct url_bar *url_bar, bool full)
{
	int		x0, y0, x1, y1;
	int		centre;
	os_error	*error;
	os_coord	eig = {1, 1};
	wimp_caret	caret;

	if (url_bar == NULL || url_bar->window == NULL)
		return false;

	/* calculate 1px in OS units */
	ro_convert_pixels_to_os_units(&eig, (os_mode) -1);

	/* The vertical centre line of the widget's extent. */

	centre = url_bar->extent.y0 +
			(url_bar->extent.y1 - url_bar->extent.y0) / 2;

	/* Position the container icon. */

	if (url_bar->container_icon != -1) {
		x0 = url_bar->extent.x0;
		x1 = url_bar->extent.x1 -
				url_bar->suggest_x - URLBAR_GRIGHT_GUTTER;

		y0 = centre - (URLBAR_HEIGHT / 2);
		y1 = y0 + URLBAR_HEIGHT;

		error = xwimp_resize_icon(url_bar->window,
				url_bar->container_icon,
				x0, y0, x1, y1);
		if (error != NULL) {
			LOG(("xwimp_resize_icon: 0x%x: %s",
					error->errnum, error->errmess));
			warn_user("WimpError", error->errmess);
			url_bar->container_icon = -1;
			return false;
		}
	}

	/* Position the URL Suggest icon. */

	if (url_bar->suggest_icon != -1) {
		x0 = url_bar->extent.x1 - url_bar->suggest_x;
		x1 = url_bar->extent.x1;

		y0 = centre - (url_bar->suggest_y / 2);
		y1 = y0 + url_bar->suggest_y;

		error = xwimp_resize_icon(url_bar->window,
				url_bar->suggest_icon,
				x0, y0, x1, y1);
		if (error != NULL) {
			LOG(("xwimp_resize_icon: 0x%x: %s",
					error->errnum, error->errmess));
			warn_user("WimpError", error->errmess);
			url_bar->suggest_icon = -1;
			return false;
		}
	}

	/* Position the Text icon. */

	if (url_bar->text_icon != -1) {
		x0 = url_bar->extent.x0 + URLBAR_FAVICON_WIDTH;
		x1 = url_bar->extent.x1 - eig.x -
				url_bar->suggest_x - URLBAR_GRIGHT_GUTTER;

		y0 = centre - (URLBAR_HEIGHT / 2) + eig.y;
		y1 = y0 + URLBAR_HEIGHT - 2 * eig.y;

		error = xwimp_resize_icon(url_bar->window,
				url_bar->text_icon,
				x0, y0, x1, y1);
		if (error != NULL) {
			LOG(("xwimp_resize_icon: 0x%x: %s",
					error->errnum, error->errmess));
			warn_user("WimpError", error->errmess);
			url_bar->text_icon = -1;
			return false;
		}

		if (xwimp_get_caret_position(&caret) == NULL) {
			if ((caret.w == url_bar->window) &&
					(caret.i == url_bar->text_icon)) {
				xwimp_set_caret_position(url_bar->window,
						url_bar->text_icon, caret.pos.x,
						caret.pos.y, -1, caret.index);
			}
		}
	}

	/* Position the Favicon icon. */

	url_bar->favicon_extent.x0 = url_bar->extent.x0 + eig.x;
	url_bar->favicon_extent.x1 = url_bar->extent.x0 + URLBAR_FAVICON_WIDTH;
	url_bar->favicon_extent.y0 = centre - (URLBAR_HEIGHT / 2) + eig.y;
	url_bar->favicon_extent.y1 = url_bar->favicon_extent.y0 + URLBAR_HEIGHT
			- 2 * eig.y;

	return true;
}