mirror of
https://github.com/netsurf-browser/netsurf
synced 2025-01-11 13:29:21 +03:00
[project @ 2006-01-01 13:58:31 by rjw]
Re-introduce clicking in URL completion window svn path=/import/netsurf/; revision=1925
This commit is contained in:
parent
6916d94356
commit
5dff5b7a3c
@ -151,6 +151,8 @@ void ro_gui_dialog_init(void)
|
|||||||
|
|
||||||
/* url suggestion */
|
/* url suggestion */
|
||||||
dialog_url_complete = ro_gui_dialog_create("url_suggest");
|
dialog_url_complete = ro_gui_dialog_create("url_suggest");
|
||||||
|
ro_gui_wimp_event_register_mouse_click(dialog_url_complete,
|
||||||
|
ro_gui_url_complete_click);
|
||||||
ro_gui_wimp_event_register_redraw_window(dialog_url_complete,
|
ro_gui_wimp_event_register_redraw_window(dialog_url_complete,
|
||||||
ro_gui_url_complete_redraw);
|
ro_gui_url_complete_redraw);
|
||||||
ro_gui_wimp_event_set_help_prefix(dialog_url_complete, "HelpAutoURL");
|
ro_gui_wimp_event_set_help_prefix(dialog_url_complete, "HelpAutoURL");
|
||||||
|
@ -820,7 +820,7 @@ void ro_gui_null_reason_code(void)
|
|||||||
if (gui_track_wimp_w == history_window)
|
if (gui_track_wimp_w == history_window)
|
||||||
ro_gui_history_mouse_at(&pointer);
|
ro_gui_history_mouse_at(&pointer);
|
||||||
if (gui_track_wimp_w == dialog_url_complete)
|
if (gui_track_wimp_w == dialog_url_complete)
|
||||||
ro_gui_url_complete_mouse_at(&pointer, false);
|
ro_gui_url_complete_mouse_at(&pointer);
|
||||||
else if (gui_track_gui_window)
|
else if (gui_track_gui_window)
|
||||||
ro_gui_window_mouse_at(gui_track_gui_window, &pointer);
|
ro_gui_window_mouse_at(gui_track_gui_window, &pointer);
|
||||||
break;
|
break;
|
||||||
@ -955,9 +955,6 @@ void ro_gui_mouse_click(wimp_pointer *pointer)
|
|||||||
|
|
||||||
if (ro_gui_wimp_event_mouse_click(pointer))
|
if (ro_gui_wimp_event_mouse_click(pointer))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (pointer->w == dialog_url_complete)
|
|
||||||
ro_gui_url_complete_mouse_at(pointer, true);
|
|
||||||
else if ((g = ro_gui_window_lookup(pointer->w)) != NULL)
|
else if ((g = ro_gui_window_lookup(pointer->w)) != NULL)
|
||||||
ro_gui_window_click(g, pointer);
|
ro_gui_window_click(g, pointer);
|
||||||
else if ((dw = ro_gui_download_window_lookup(pointer->w)) != NULL)
|
else if ((dw = ro_gui_download_window_lookup(pointer->w)) != NULL)
|
||||||
|
@ -508,12 +508,27 @@ void ro_gui_url_complete_redraw(wimp_draw *redraw) {
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handle mouse movements/clicks over the URL completion window.
|
* Handle mouse movement over the URL completion window.
|
||||||
*
|
*
|
||||||
* \param pointer the pointer state
|
* \param pointer the pointer state
|
||||||
* \param buttons whether to react to mouse buttons
|
|
||||||
*/
|
*/
|
||||||
void ro_gui_url_complete_mouse_at(wimp_pointer *pointer, bool buttons) {
|
void ro_gui_url_complete_mouse_at(wimp_pointer *pointer) {
|
||||||
|
wimp_mouse_state current;
|
||||||
|
|
||||||
|
current = pointer->buttons;
|
||||||
|
pointer->buttons = 0;
|
||||||
|
ro_gui_url_complete_click(pointer);
|
||||||
|
pointer->buttons = current;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handle mouse clicks in the URL completion window.
|
||||||
|
*
|
||||||
|
* \param pointer the pointer state
|
||||||
|
* \return whether the click was handled
|
||||||
|
*/
|
||||||
|
bool ro_gui_url_complete_click(wimp_pointer *pointer) {
|
||||||
wimp_window_state state;
|
wimp_window_state state;
|
||||||
os_error *error;
|
os_error *error;
|
||||||
int selection, old_selection;
|
int selection, old_selection;
|
||||||
@ -521,8 +536,8 @@ void ro_gui_url_complete_mouse_at(wimp_pointer *pointer, bool buttons) {
|
|||||||
char *url;
|
char *url;
|
||||||
|
|
||||||
if ((mouse_x == pointer->pos.x) && (mouse_y == pointer->pos.y) &&
|
if ((mouse_x == pointer->pos.x) && (mouse_y == pointer->pos.y) &&
|
||||||
(pointer->buttons == 0))
|
(!pointer->buttons))
|
||||||
return;
|
return false;
|
||||||
mouse_x = pointer->pos.x;
|
mouse_x = pointer->pos.x;
|
||||||
mouse_y = pointer->pos.y;
|
mouse_y = pointer->pos.y;
|
||||||
|
|
||||||
@ -532,20 +547,20 @@ void ro_gui_url_complete_mouse_at(wimp_pointer *pointer, bool buttons) {
|
|||||||
LOG(("xwimp_get_window_state: 0x%x: %s",
|
LOG(("xwimp_get_window_state: 0x%x: %s",
|
||||||
error->errnum, error->errmess));
|
error->errnum, error->errmess));
|
||||||
warn_user("WimpError", error->errmess);
|
warn_user("WimpError", error->errmess);
|
||||||
return;
|
return false;
|
||||||
}
|
}
|
||||||
selection = (state.visible.y1 - pointer->pos.y - state.yscroll) / 44;
|
selection = (state.visible.y1 - pointer->pos.y - state.yscroll) / 44;
|
||||||
if (selection != url_complete_matches_selection) {
|
if (selection != url_complete_matches_selection) {
|
||||||
if (url_complete_matches_selection == -1) {
|
if (url_complete_matches_selection == -1) {
|
||||||
g = ro_gui_window_lookup(url_complete_parent);
|
g = ro_gui_window_lookup(url_complete_parent);
|
||||||
if (!g)
|
if (!g)
|
||||||
return;
|
return false;
|
||||||
url = ro_gui_get_icon_string(g->toolbar->toolbar_handle,
|
url = ro_gui_get_icon_string(g->toolbar->toolbar_handle,
|
||||||
ICON_TOOLBAR_URL);
|
ICON_TOOLBAR_URL);
|
||||||
free(url_complete_original_url);
|
free(url_complete_original_url);
|
||||||
url_complete_original_url = malloc(strlen(url) + 1);
|
url_complete_original_url = malloc(strlen(url) + 1);
|
||||||
if (!url_complete_original_url)
|
if (!url_complete_original_url)
|
||||||
return;
|
return false;
|
||||||
strcpy(url_complete_original_url, url);
|
strcpy(url_complete_original_url, url);
|
||||||
}
|
}
|
||||||
old_selection = url_complete_matches_selection;
|
old_selection = url_complete_matches_selection;
|
||||||
@ -566,12 +581,16 @@ void ro_gui_url_complete_mouse_at(wimp_pointer *pointer, bool buttons) {
|
|||||||
warn_user("WimpError", error->errmess);
|
warn_user("WimpError", error->errmess);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (!pointer->buttons)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
/* find owning window */
|
||||||
|
g = ro_gui_window_lookup(url_complete_parent);
|
||||||
|
if (!g)
|
||||||
|
return false;
|
||||||
|
|
||||||
/* Select sets the text and launches */
|
/* Select sets the text and launches */
|
||||||
if ((pointer->buttons == wimp_CLICK_SELECT) && (buttons)) {
|
if (pointer->buttons == wimp_CLICK_SELECT) {
|
||||||
g = ro_gui_window_lookup(url_complete_parent);
|
|
||||||
if (!g)
|
|
||||||
return;
|
|
||||||
ro_gui_set_icon_string(g->toolbar->toolbar_handle,
|
ro_gui_set_icon_string(g->toolbar->toolbar_handle,
|
||||||
ICON_TOOLBAR_URL,
|
ICON_TOOLBAR_URL,
|
||||||
url_complete_matches[url_complete_matches_selection]);
|
url_complete_matches[url_complete_matches_selection]);
|
||||||
@ -582,36 +601,11 @@ void ro_gui_url_complete_mouse_at(wimp_pointer *pointer, bool buttons) {
|
|||||||
ro_gui_url_complete_close(NULL, 0);
|
ro_gui_url_complete_close(NULL, 0);
|
||||||
|
|
||||||
/* Adjust just sets the text */
|
/* Adjust just sets the text */
|
||||||
} else if ((pointer->buttons == wimp_CLICK_ADJUST) && (buttons)) {
|
} else if (pointer->buttons == wimp_CLICK_ADJUST) {
|
||||||
g = ro_gui_window_lookup(url_complete_parent);
|
|
||||||
if (!g)
|
|
||||||
return;
|
|
||||||
ro_gui_set_icon_string(g->toolbar->toolbar_handle,
|
ro_gui_set_icon_string(g->toolbar->toolbar_handle,
|
||||||
ICON_TOOLBAR_URL,
|
ICON_TOOLBAR_URL,
|
||||||
url_complete_matches[url_complete_matches_selection]);
|
url_complete_matches[url_complete_matches_selection]);
|
||||||
ro_gui_url_complete_keypress(g, 0);
|
ro_gui_url_complete_keypress(g, 0);
|
||||||
}
|
}
|
||||||
}
|
return true;
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Dumps all matching URLs to stderr.
|
|
||||||
*/
|
|
||||||
void url_complete_dump_matches(const char *url) {
|
|
||||||
char *match_url;
|
|
||||||
struct url_data *reference = NULL;
|
|
||||||
char *output;
|
|
||||||
|
|
||||||
match_url = url_store_match_string(url);
|
|
||||||
if (!match_url)
|
|
||||||
return;
|
|
||||||
|
|
||||||
fprintf(stderr, "\nDumping matches for '%s' ('%s'):\n", url, match_url);
|
|
||||||
while ((output = url_store_match(match_url, &reference))) {
|
|
||||||
fprintf(stderr, " - ");
|
|
||||||
fprintf(stderr, output);
|
|
||||||
fprintf(stderr, "\n");
|
|
||||||
}
|
|
||||||
fprintf(stderr, "\nEnd of matches.\n\n");
|
|
||||||
free(match_url);
|
|
||||||
}
|
}
|
||||||
|
@ -20,8 +20,7 @@ bool ro_gui_url_complete_keypress(struct gui_window *g, int key);
|
|||||||
void ro_gui_url_complete_resize(struct gui_window *g, wimp_open *open);
|
void ro_gui_url_complete_resize(struct gui_window *g, wimp_open *open);
|
||||||
bool ro_gui_url_complete_close(struct gui_window *g, wimp_i i);
|
bool ro_gui_url_complete_close(struct gui_window *g, wimp_i i);
|
||||||
void ro_gui_url_complete_redraw(wimp_draw *redraw);
|
void ro_gui_url_complete_redraw(wimp_draw *redraw);
|
||||||
void ro_gui_url_complete_mouse_at(wimp_pointer *pointer, bool buttons);
|
void ro_gui_url_complete_mouse_at(wimp_pointer *pointer);
|
||||||
|
bool ro_gui_url_complete_click(wimp_pointer *pointer);
|
||||||
void url_complete_dump_matches(const char *url);
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user