aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjcid <devnull@localhost>2008-10-26 19:21:51 +0100
committerjcid <devnull@localhost>2008-10-26 19:21:51 +0100
commit989c6785ff153d4a84a176639420aa1837ead2d7 (patch)
treeb1e403ecd61f28f999b357e3cb1960dd5dd98391
parente48bb7717ec4a51abf1a2d467a5b1dbebf61888a (diff)
- Added the "middle_click_drags_page" dillorc option.
-rw-r--r--ChangeLog2
-rw-r--r--dillorc5
-rw-r--r--src/html.cc2
-rw-r--r--src/prefs.c6
-rw-r--r--src/prefs.h1
-rw-r--r--src/ui.cc10
-rw-r--r--src/ui.hh3
-rw-r--r--src/uicmd.cc16
-rw-r--r--src/uicmd.hh3
9 files changed, 47 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index cf34ec5d..9a65c1d0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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
diff --git a/dillorc b/dillorc
index 05debda6..e61b1c40 100644
--- a/dillorc
+++ b/dillorc
@@ -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 */
diff --git a/src/ui.cc b/src/ui.cc
index 87fab74f..47c6d220 100644
--- a/src/ui.cc
+++ b/src/ui.cc
@@ -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)
diff --git a/src/ui.hh b/src/ui.hh
index 7a302efd..926a800f 100644
--- a/src/ui.hh
+++ b/src/ui.hh
@@ -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
}