summaryrefslogtreecommitdiff
path: root/src/gui/widgets/browserbox.cpp
AgeCommit message (Collapse)AuthorFilesLines
2025-04-26GUI: Added support for explicit outline color per palette entryThorbjørn Lindeijer1-31/+49
This enables customized outlines for each text color as well as adding outlines for specific palettes, as done by the Jewelry theme. Merged PARTY_CHAT_TAB and PARTY_SOCIAL_TAB into just PARTY_TAB since we should probably be using the same color there anyway. Split off WHISPER_TAB as separate color from WHISPER.
2025-04-25GUI: Added support for multiple color palettes to ThemeThorbjørn Lindeijer1-46/+32
Each Skin can point to a different palette, which can be used to tweak text colors where necessary. For now there is no generic solution for this, instead a number of locations have been adjusted to take the palette into account: * ChatWindow sets its palette on the BrowserBox used in its tabs. * Popup sets its palette on child widgets when they are added (covering BrowserBox, Label and TextBox). * ItemPopup now uses its palette when looking up colors. The BrowserBox now retrieves its numbered text colors from the theme. Also added OLDCHAT, AWAYCHAT and GLOBAL theme colors, with ##g, ##o and ##a to choose these colors respectively. Fixed ImageRect move constructor. TextPreview class was cleaned up from unused functionality. Being name colors are no longer different between the name shown on the being and the name shown in the SpeechDialog.
2025-04-02Use a consistent naming style for enum class valuesThorbjørn Lindeijer1-2/+2
Sometimes I've used CamelCase and sometimes SNAKE_CASE for these values. Since "enum class" values are always prefixed with the enum name, which uses CamelCase, I find it more fitting to use it for the values as well. Also fixes compilation on Windows where 'ERROR' was conflicting with a define.
2025-04-02General code cleanupsThorbjørn Lindeijer1-31/+14
* Removed some unused includes and forward declarations. * Use std::unique_ptr to automate cleanup. * Use TextRenderer::renderText in BrowserBox to avoid code duplication. * Removed unused STATE_NORMAL from StateFlags. * Small layout fix in ServerDialog. * Reduced rewrapping delay in BrowserBox to 33ms and disabled it entirely when there are no more than 1000 lines to rewrap. The rewrapping is usually fast enough.
2025-03-11Implemented replacement of key names in NPC dialogThorbjørn Lindeijer1-0/+36
Now when NPCs text includes "###MoveUp;", it will get replaced by "Up", or whatever key is currently bound to that action. For compatibility reasons the key name can optionally have a "key" prefix, for example "###keyMoveUp;". Closes #73
2025-02-17Further ResourceManager and PhysFS cleanupsThorbjørn Lindeijer1-15/+25
* Wrapped remaining PhysFS API calls and set PHYSFS_DEPRECATED to suppress deprecation warnings for PHYSFS_getUserDir, since no alternative is available for now. * Removed support for decompressing .gz files, since it has been unused for years and doesn't seem useful when updates are anyway served in an archive. * Use SDL_LoadFile and SDL_LoadFile_RW convenience functions (raises minimum SDL version to 2.0.10). * Removed ResourceManager::copyFile, since it was unused and will likely stay unused. * Removed ResourceManager::loadTextFile. Instead, split up the string in BrowserBox::addRows without making additional copies.
2024-10-08Added convenient and efficient Timer classThorbjørn Lindeijer1-4/+4
The Timer is efficient because it does not depend on incrementing a counter to keep track of time, nor does it call SDL_GetTicks every time its state is checked (this happens once per frame instead). Along with global functions Time::absoluteTimeMs() and Time::deltaTimeMs(), this replaces previous globals tick_time, cur_time and get_elapsed_time(). For now, there is still a fixed 100 times per second logic call rate, but the new Time::deltaTimeMs() function should allow getting rid of this.
2024-09-28Removed getter/setter cruft from ItemInfoThorbjørn Lindeijer1-1/+1
Made the class and the code in general more readable by removing all the needless getters and setters.
2024-09-02Added a hand mouse cursor, used when hovering linksThorbjørn Lindeijer1-1/+5
InputEvent::mIsConsumed is used to tell the Window it should not change the mouse cursor as well. This change also adds a closed hand mouse cursor, though this is unused for now (might be useful when dragging stuff around). The new cursors are by meway.
2024-08-31BrowserBox: Make sure to start each line with the default colorThorbjørn Lindeijer1-1/+4
This was already the case for each newly added line, but when the entire layout was redone previous selected colors would spill over to the next line.
2024-08-31Some margin and indentation tweaks in news and NPC dialogsThorbjørn Lindeijer1-26/+16
* Apply indentation after wrapping only in NPC dialogs and chat window, since we don't want this in the updater window / news. * Added some margin around the text in the updater window and NPC dialogs, using gcn::Widget::setFrameSize. * Cosmetic changes to BrowserBox implementation.
2024-08-28Fixed handling of consecutive text formatting markersThorbjørn Lindeijer1-11/+7
If a text contained for example "##3##B", expected behavior was to switch to blue color and bold font. Instead, due to there being no actual text in between the markers, the layouting code was aborting prematurely here: if (mMode == AUTO_WRAP && partWidth == 0) break; As far as I could judge, this check is actually not necessary anyway, but I've kept it for now since the wrapping code looks so problematic. Instead, a while loop now makes sure we process all consecutive formatting markers. Closes #75
2024-06-25Show item links with empty item name.Andrei Karas1-0/+11
(cherry picked from commit 0192d44d46dcf948ab26371862753f4baf5aae4e)
2024-06-22Added support for bold font markup to BrowserBoxThorbjørn Lindeijer1-39/+63
##B switches font to bold, ##b switches font to normal. Each line starts with the normal font. This change is roughly based on ManaPlus commit 6c4c6ca877c336e17c0378131a0a139792012a99.
2024-03-11Implemented ability to open external links in news and chatThorbjørn Lindeijer1-4/+7
* Use ConfirmDialog to confirm the opening of the external link. * ConfirmDialog now centers on its parent window when provided. * Reset hovered link when mouse exits the BrowserBox.
2024-02-09Optimized BrowserBoxThorbjørn Lindeijer1-312/+294
* Introduced a LayoutContext that conveniently allows for relayouting all rows, or just a single one when it is added. BrowserBox::addRow no longer relayouts all the rows. * BrowserLink and LinePart are now merged into a new TextRow struct, so they can be conveniently dropped when the row limit has been reached. * Removed "opaque" option, which was enabled by default but disabled for all BrowserBox instances. * Removed "always update" option, and instead start delaying relayouting automatically when there are a lot of rows (> 100 currently). * Update window now also has text wrapping enabled. Closes #50
2024-02-09Some cleanups in UpdaterWindow and BrowserBoxThorbjørn Lindeijer1-98/+40
Doing some cleanups before working towards optimizing this code. Removed needless additional wrapping code in BrowserBox::addRow, since the text will be relayouted anyway. Simplified layouting code a little. For example, there's no need to keep track of the number of wrapped lines. Use more optimal data structures, like an std::deque for the text rows and a plain std::vector for the line parts. Both have less fragmentation than an std::list.
2024-02-09C++11: Use default member initializersThorbjørn Lindeijer1-17/+10
This patch is not exhaustive.
2024-01-29Apply C++11 fixitsThorbjørn Lindeijer1-8/+3
modernize-loop-convert modernize-deprecated-headers
2024-01-26Apply C++11 fixitsThorbjørn Lindeijer1-7/+7
modernize-use-auto modernize-use-nullptr modernize-use-override modernize-use-using
2012-02-07Made BrowserBox use the recommended line skip for its fontThorbjørn Lindeijer1-45/+58
SDL_ttf provides a separate function for getting the recommended line skip, or the spacing between two lines of text. When rendering multiple lines of text this should be used rather than the visual height of the font. Since the information is only available for TrueTypeFont, a dynamic_cast was used with a fallback on gcn::Font::getHeight. Also made some small tweaks but nothing that really affects performance. Reviewed-by: Yohann Ferreira
2012-01-26Updated copyrights to 2012Thorbjørn Lindeijer1-1/+1
2012-01-09Made the chat text much more readable in every opacity case.Yohann Ferreira1-3/+36
I added text shadow and outline support to the browserbox, and made it adapt the text for the chattabs depending on the GUI opacity. Reviewed-by: Ablu.
2011-01-03Merge branch '0.5'Thorbjørn Lindeijer1-3/+3
Conflicts: po/es.po po/fr.po src/net/tmwa/adminhandler.cpp update-creator.sh
2011-01-02Fixing compiler warningsStefan Dombrowski1-2/+2
The compiler gave two times the warning: comparison between signed and unsigned integer expressions. Reviewed-by: thorbjorn
2010-12-26Fix crash with corrupted links in chat.Andrei Karas1-2/+2
Reviewed-by: Kage
2010-11-01Merge branch '0.5' of gitorious.org:mana/manaYohann Ferreira1-183/+74
Conflicts: src/being.cpp src/client.cpp src/commandhandler.cpp src/gui/setup_video.cpp src/gui/socialwindow.cpp src/gui/viewport.cpp src/gui/widgets/browserbox.cpp src/gui/widgets/itemcontainer.cpp src/imageparticle.cpp src/localplayer.cpp src/localplayer.h src/map.cpp src/net/tmwa/beinghandler.cpp src/particle.cpp src/particle.h src/player.cpp src/player.h
2010-10-01Fix possible invisible chat.Andrei Karas1-5/+2
Reviewed-by: Thorbjorn
2010-09-29Improve chat speed.Andrei Karas1-183/+77
Parse chat lines in BrowserBox once after changes. Reviewed-by: Thorbjorn
2010-08-03Move Theme and UserPalette to the resources folderJared Adams1-2/+2
Reviewed-by: Yohann Ferreira
2010-03-12Split Palette into Theme and UserPaletteJared Adams1-7/+7
Themes can now control the colors they use. Colors in the Viewport (being names, particles, etc) can still be changed by the user. Also make ProgressBars more easily colored. DyePalette was made more flexible in the process. Also fixes comparing strings of different lengths insensitively. Reviewed-by: Thorbjørn Lindeijer
2010-02-22Modify copyright headersFreeyorp1-1/+2
2010-02-20License header update for The Mana ClientThorbjørn Lindeijer1-4/+3
2010-02-14Fixed browser links not properly resizing once the font size is changed.Tametomo1-1/+1
They'd be in the correct position, just that the link length would always stay at the length of the original font. Signed-off-by: Tametomo <irarice@gmail.com>
2010-02-07Updated Copyright year to 2010!Bertram1-1/+1
Also added the update copyright tool from the Wormux Team. ( And not forgetting credit's due. :P )
2010-01-26Fixed dealing with @@id|caption@@ causing ## to form line breaksDaniel Bradshaw1-0/+2
Add a couple of missing wrapped = false; lines, so that it doesn't treat every further ## as a line wrap
2010-01-12Improve chat speed.Andrei Karas1-29/+221
For improve chat speed this patch add some hacks to BrowserBox class, split big words in ChatTab. Also fix DoS in chat.
2010-01-11Cleanup GUI classesJared Adams1-1/+2
Moved remaining widgets into widgets folder, standardized include order, moved TextRenderer out.
2010-01-10Change code styleAndrei Karas1-2/+1
2009-05-26Fixed the line under links to not extend below the textBjørn Lindeijer1-1/+1
Caused the underline for links at the bottom of the BrowserBox to draw outside of the clip area.
2009-05-26Guard against an issue where forced wrapping would never succeedBjørn Lindeijer1-5/+5
In some situations, like when wrapping the "]." part after an item link, the attempt at forced-wrapping the text never succeeded. The additional guard "end > start" protects against these cases. Also made some small optimizations. Removed redundant c_str() calls, noticed by Octalot, and changed " " to ' ' for finding a space.
2009-05-23Fix resetting height of browserbox on /clear.Dennis Friis1-0/+1
Patch by QOAL (cherry picked from commit cc2cd67e1c3c3f95485ae4477b6a2f0d255e9163)
2009-05-13BrowserBox doesn't need to know about the TrueTypeFont classBjørn Lindeijer1-6/+6
2009-05-04Fix link colors and item links for pickup messagesJared Adams1-1/+1
2009-04-18Restored support for build-in colors to BrowserBoxBjørn Lindeijer1-20/+38
Now the BrowserBox can again display 9 build-in (non configurable) colors, used for example in the client news and the help window.
2009-04-13Fixed broken linksDavid Athay1-4/+7
2009-04-07Moved basic widgets into the gui/widgets directoryBjørn Lindeijer1-0/+418
In an attempt to make the GUI code a little more structured, basic widgets are now put in gui/widgets. Many includes were also cleaned up.