aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/chat.cpp58
-rw-r--r--src/chat.h4
-rw-r--r--src/gui/guiChatConsole.cpp58
-rw-r--r--src/gui/guiChatConsole.h4
4 files changed, 60 insertions, 64 deletions
diff --git a/src/chat.cpp b/src/chat.cpp
index c58b6e7cb..9bceb3535 100644
--- a/src/chat.cpp
+++ b/src/chat.cpp
@@ -28,8 +28,6 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include "util/strfnd.h"
#include "util/string.h"
#include "util/numeric.h"
-#include "porting.h"
-#include "gettext.h"
ChatBuffer::ChatBuffer(u32 scrollback):
m_scrollback(scrollback)
@@ -886,59 +884,3 @@ void ChatBackend::scrollPageUp()
{
m_console_buffer.scroll(-(s32)m_console_buffer.getRows());
}
-
-void ChatBackend::middleClick(s32 col, s32 row)
-{
- // Prevent accidental rapid clicking
- static u32 oldtime = 0;
- // seriously..
- u32 newtime = std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch()).count();
-
- // 0.6 seconds should suffice
- if(newtime - oldtime < 600)
- return;
- oldtime = newtime;
-
- const std::vector<ChatFormattedFragment> & frags = getConsoleBuffer().getFormattedLine(row).fragments;
- std::string weblink = ""; // from frag meta
-
- // Identify targetted fragment, if exists
- int ind = frags.size() - 1;
- while(u32(col - 1) < frags[ind].column)
- {
- --ind;
- }
- if(ind > -1)
- {
- weblink = frags[ind].meta;
- }
-
- // Debug help
- std::string ws;
- ws = "Middleclick: (" + std::to_string(col) + ',' + std::to_string(row) + ')' + " frags:";
- for(u32 i=0;i<frags.size();++i)
- {
- if(ind == int(i))
- ws += '*';
- ws += std::to_string(frags.at(i).column) + '('
- + std::to_string(frags.at(i).text.size()) + "),";
- }
- g_logger.log(LL_VERBOSE, ws);
-
- // User notification
- std::string mesg;
- if(weblink.size() != 0)
- {
- mesg = " * ";
- if(porting::open_url(weblink))
- {
- mesg += gettext("Opening webpage");
- }
- else
- {
- mesg += gettext("Failed to open webpage");
- }
- mesg += " '" + weblink + "'";
- addUnparsedMessage(utf8_to_wide(mesg));
- }
-}
diff --git a/src/chat.h b/src/chat.h
index bb40af048..d7d27646f 100644
--- a/src/chat.h
+++ b/src/chat.h
@@ -289,10 +289,6 @@ public:
void scrollPageDown();
void scrollPageUp();
- // Handle middle click at this font position
- // If clicked fragment has a web url, send it to the system default web browser
- void middleClick(s32 col, s32 row);
-
// Resize recent buffer based on settings
void applySettings();
diff --git a/src/gui/guiChatConsole.cpp b/src/gui/guiChatConsole.cpp
index c27ade23d..6330d95d4 100644
--- a/src/gui/guiChatConsole.cpp
+++ b/src/gui/guiChatConsole.cpp
@@ -661,7 +661,7 @@ bool GUIChatConsole::OnEvent(const SEvent& event)
// because console prompt and hardcoded margins
if(event.MouseInput.Y / m_fontsize.Y < (m_height / m_fontsize.Y) - 1 )
{
- m_chat_backend->middleClick(event.MouseInput.X / m_fontsize.X, event.MouseInput.Y / m_fontsize.Y);
+ middleClick(event.MouseInput.X / m_fontsize.X, event.MouseInput.Y / m_fontsize.Y);
}
}
}
@@ -729,3 +729,59 @@ bool GUIChatConsole::isInCtrlKeys(const irr::EKEY_CODE& kc)
}
return false;
}
+
+void GUIChatConsole::middleClick(s32 col, s32 row)
+{
+ // Prevent accidental rapid clicking
+ static u32 oldtime = 0;
+ // seriously..
+ u32 newtime = std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch()).count();
+
+ // 0.6 seconds should suffice
+ if(newtime - oldtime < 600)
+ return;
+ oldtime = newtime;
+
+ const std::vector<ChatFormattedFragment> & frags = m_chat_backend->getConsoleBuffer().getFormattedLine(row).fragments;
+ std::string weblink = ""; // from frag meta
+
+ // Identify targetted fragment, if exists
+ int ind = frags.size() - 1;
+ while(u32(col - 1) < frags[ind].column)
+ {
+ --ind;
+ }
+ if(ind > -1)
+ {
+ weblink = frags[ind].meta;
+ }
+
+ // Debug help
+ std::string ws;
+ ws = "Middleclick: (" + std::to_string(col) + ',' + std::to_string(row) + ')' + " frags:";
+ for(u32 i=0;i<frags.size();++i)
+ {
+ if(ind == int(i))
+ ws += '*';
+ ws += std::to_string(frags.at(i).column) + '('
+ + std::to_string(frags.at(i).text.size()) + "),";
+ }
+ g_logger.log(LL_VERBOSE, ws);
+
+ // User notification
+ std::string mesg;
+ if(weblink.size() != 0)
+ {
+ mesg = " * ";
+ if(porting::open_url(weblink))
+ {
+ mesg += gettext("Opening webpage");
+ }
+ else
+ {
+ mesg += gettext("Failed to open webpage");
+ }
+ mesg += " '" + weblink + "'";
+ m_chat_backend->addUnparsedMessage(utf8_to_wide(mesg));
+ }
+}
diff --git a/src/gui/guiChatConsole.h b/src/gui/guiChatConsole.h
index 0618f2956..169fb7eb7 100644
--- a/src/gui/guiChatConsole.h
+++ b/src/gui/guiChatConsole.h
@@ -82,9 +82,11 @@ private:
void drawText();
void drawPrompt();
- // Parse conf and populate "ctrl" keys for clickable chat
+ // Clickable weblink stuff
int setupChatClickCtrlKeys(std::string inputline);
bool isInCtrlKeys(const irr::EKEY_CODE& kc);
+ // If clicked fragment has a web url, send it to the system default web browser
+ void middleClick(s32 col, s32 row);
private:
ChatBackend* m_chat_backend;