diff options
-rw-r--r-- | ChangeLog | 2 | ||||
-rw-r--r-- | dillorc | 5 | ||||
-rw-r--r-- | src/html.cc | 2 | ||||
-rw-r--r-- | src/prefs.c | 6 | ||||
-rw-r--r-- | src/prefs.h | 1 | ||||
-rw-r--r-- | src/ui.cc | 10 | ||||
-rw-r--r-- | src/ui.hh | 3 | ||||
-rw-r--r-- | src/uicmd.cc | 16 | ||||
-rw-r--r-- | src/uicmd.hh | 3 |
9 files changed, 47 insertions, 1 deletions
@@ -19,6 +19,8 @@ dillo-2.1 +- Allowed compilation with older machines by removing a few C99isms. - Added use of inttypes.h when stdint.h isn't found. Patches: Dan Fandrich ++- Added the "middle_click_drags_page" dillorc option. + Patch: Jorge Arellano, Thomas Orgis +- Set the File menu label to hide when the File menu-button is shown. ? Trying a new iconv() test in configure.in. Patch: Jorge Arellano @@ -203,6 +203,11 @@ # If you prefer to open a new Window instead, set it to NO. #middle_click_opens_new_tab=YES +# Mouse middle click by default drives drag-scrolling. +# To paste an URL into the window instead of scrolling, set it to NO. +# Note: You could always paste the URL onto the URL box clear button. +#middle_click_drags_page=YES + # Focus follows new Tabs. # You can hold SHIFT to temporarily revert this behaviour. #focus_new_tab=YES diff --git a/src/html.cc b/src/html.cc index cc2c236a..248091aa 100644 --- a/src/html.cc +++ b/src/html.cc @@ -732,10 +732,12 @@ bool DilloHtml::HtmlLinkReceiver::enter (Widget *widget, int link, int img, if (link == -1) { _MSG(" Link LEAVE notify...\n"); a_UIcmd_set_msg(bw, ""); + a_UIcmd_set_pointer_on_link(bw, FALSE); } else { _MSG(" Link ENTER notify...\n"); Html_set_link_coordinates(html, link, x, y); a_UIcmd_set_msg(bw, "%s", URL_STR(html->links->get(link))); + a_UIcmd_set_pointer_on_link(bw, TRUE); } return true; } diff --git a/src/prefs.c b/src/prefs.c index 10e87d0c..29ed9442 100644 --- a/src/prefs.c +++ b/src/prefs.c @@ -61,6 +61,7 @@ DilloPrefs prefs; /* define enumeration values to be returned for specific symbols */ typedef enum { + DRC_TOKEN_MIDDLE_CLICK_DRAGS_PAGE, DRC_TOKEN_ALLOW_WHITE_BG, DRC_TOKEN_BG_COLOR, DRC_TOKEN_CONTRAST_VISITED_COLOR, @@ -141,6 +142,7 @@ static const SymNode_t symbols[] = { { "limit_text_width", DRC_TOKEN_LIMIT_TEXT_WIDTH }, { "link_color", DRC_TOKEN_LINK_COLOR }, { "load_images", DRC_TOKEN_LOAD_IMAGES }, + { "middle_click_drags_page", DRC_TOKEN_MIDDLE_CLICK_DRAGS_PAGE }, { "middle_click_opens_new_tab", DRC_TOKEN_MIDDLE_CLICK_OPENS_NEW_TAB }, { "no_proxy", DRC_TOKEN_NOPROXY }, { "panel_size", DRC_TOKEN_PANEL_SIZE }, @@ -236,6 +238,9 @@ static int Prefs_parse_pair(char *name, char *value) case DRC_TOKEN_ALLOW_WHITE_BG: prefs.allow_white_bg = (strcmp(value, "YES") == 0); break; + case DRC_TOKEN_MIDDLE_CLICK_DRAGS_PAGE: + prefs.middle_click_drags_page = (strcmp(value, "YES") == 0); + break; case DRC_TOKEN_FORCE_MY_COLORS: prefs.force_my_colors = (strcmp(value, "YES") == 0); break; @@ -459,6 +464,7 @@ void a_Prefs_init(void) prefs.save_dir = dStrdup(D_SAVE_DIR); prefs.show_msg = TRUE; prefs.show_extra_warnings = FALSE; + prefs.middle_click_drags_page = TRUE; /* this locale stuff is to avoid parsing problems with float numbers */ old_locale = dStrdup (setlocale (LC_NUMERIC, NULL)); diff --git a/src/prefs.h b/src/prefs.h index 7a409631..ec807f46 100644 --- a/src/prefs.h +++ b/src/prefs.h @@ -62,6 +62,7 @@ struct _DilloPrefs { char *save_dir; bool_t show_msg; bool_t show_extra_warnings; + bool_t middle_click_drags_page; }; /* Global Data */ @@ -625,6 +625,8 @@ UI::UI(int x, int y, int ww, int wh, const char* label, const UI *cur_ui) : if (f) this->labelfont(f); + PointerOnLink = FALSE; + Tabs = NULL; TabTooltip = NULL; TopGroup = new PackedGroup(0, 0, ww, wh); @@ -801,6 +803,14 @@ int UI::handle(int event) ret = 1; } } + + } else if (event == PUSH) { + if (prefs.middle_click_drags_page == 0 && + event_button() == MiddleButton && + !a_UIcmd_pointer_on_link(a_UIcmd_get_bw_by_widget(this))) { + paste_url(); + ret = 1; + } } if (!ret) @@ -64,6 +64,7 @@ class UI : public fltk::Group { UIPanelmode Panelmode; Findbar *findbar; + int PointerOnLink; PackedGroup *make_toolbar(int tw, int th); PackedGroup *make_location(); @@ -103,6 +104,8 @@ public: CustTabGroup *tabs() { return Tabs; } void tabs(CustTabGroup *tabs) { Tabs = tabs; } + int pointerOnLink() { return PointerOnLink; } + void pointerOnLink(int flag) { PointerOnLink = flag; } // Hooks to method callbacks void panel_cb_i(); diff --git a/src/uicmd.cc b/src/uicmd.cc index ac6decb8..e315417e 100644 --- a/src/uicmd.cc +++ b/src/uicmd.cc @@ -914,6 +914,22 @@ void a_UIcmd_set_buttons_sens(BrowserWindow *bw) } /* + * Keep track of mouse pointer over a link. + */ +void a_UIcmd_set_pointer_on_link(BrowserWindow *bw, int flag) +{ + BW2UI(bw)->pointerOnLink(flag); +} + +/* + * Is the mouse pointer over a link? + */ +int a_UIcmd_pointer_on_link(BrowserWindow *bw) +{ + return BW2UI(bw)->pointerOnLink(); +} + +/* * Toggle control panel (aka. fullscreen) */ void a_UIcmd_fullscreen_toggle(BrowserWindow *bw) diff --git a/src/uicmd.hh b/src/uicmd.hh index 02dbae8a..c4e34736 100644 --- a/src/uicmd.hh +++ b/src/uicmd.hh @@ -73,7 +73,8 @@ bool_t a_UIcmd_get_images_enabled(BrowserWindow *bw); void a_UIcmd_set_images_enabled(BrowserWindow *bw, int flag); void a_UIcmd_set_buttons_sens(BrowserWindow *bw); void a_UIcmd_fullscreen_toggle(BrowserWindow *bw); - +void a_UIcmd_set_pointer_on_link(BrowserWindow *bw, int flag); +int a_UIcmd_pointer_on_link(BrowserWindow *bw); #ifdef __cplusplus } |