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); } } }
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); } } }
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; }