aboutsummaryrefslogtreecommitdiff
path: root/gui/dialog.cpp
AgeCommit message (Collapse)Author
2020-01-04GUI: Introduce dynamic layoutsBastien Bouclet
Prior to this change, a GUI layout was only affected by the screen size. Now, a layout can additionally be influenced by the GUI dialog and widgets that uses it. This capability is leveraged to implement the following features: * Layout elements that are not bound to a GUI widget do not take space. This means that dialogs where the widgets shown depend on for example a feature being enabled at configure time no longer have blank spaces. * Widgets can define a minimal required size for their contents not to be cut. For now this is only used for buttons so their width is always sufficient for their caption not to be cut. This mechanism could be applied to other widget types in the future.
2019-10-07GRAPHICS: Vector renderer clipping rect related cleanupsBastien Bouclet
Selecting whether a clipping variant of a draw call needs to be used is no longer the responsibility to the caller. The clipping rect is now part of the state of the renderer. Also fix some of the draw calls to better apply the clipping rect.
2019-10-03GUI: Add Missing Switch Default CasesD G Turner
These are flagged by GCC if -Wswitch-default is enabled.
2019-04-30GUI: Support adding games via Drag and DropCameron Cawley
2018-04-19GUI: Unify clip and non-clip draw callsBastien Bouclet
2018-03-12GUI: Remove the ThemeItem draw queuesBastien Bouclet
Drawing nows happens directly when the Dialog or Widget draw methods are called. This makes it easy to debug why a particular low level draw method was called, by inspecting the call stack. This replaces the notion of "buffering" by two independant ways to control what is drawn and where: - The active layer is used to select whether the foreground or background part of the dialogs are rendered by the draw calls. - The active surface is used to select if the draw calls affect the back buffer or the screen. The foreground layer of the active dialog is drawn directly to the screen. Its background layer is drawn to the back buffer. This way widgets can restore the back buffer in order to update without having to redraw the dialog's background. Dialogs lower in the dialog stack are drawn entirely to the back buffer.
2018-01-27GUI: Remove Dialog::markAsDirty to expose full GUI redrawsBastien Bouclet
2018-01-27GUI: Implement dirty-checking for widget redrawsBastien Bouclet
2017-06-13GUI: Focus the first 'focusable' widget when rebuilding dialogsBastien Bouclet
Fixes Trac#9838.
2017-04-06GUI: Fix access to deleted widget after rebuilding a dialogThierry Crozat
The issue was with the focus or mouse widget as it may not be a direct child of the dialog (it may for example be a child of the tab widget in the options dialog) and removing a widget was not resetting the mouse of focus widget if that widget was not a direct child.
2016-07-03GUI: Fix Dialog's and TabWidget's reflowLayout()Alexander Tkachev
2016-06-01GUI: More object initialization cleanupEugene Sandulenko
2016-04-06GUI: When dialogs gain focus, inform them of the current mouse positionOri Avtalion
Previously, they only reacted to the mouse position once it was moved. This meant that if the cursor was on a button that just gained focus, it did not highlight. Fixes #7101.
2015-03-21GUI: Adjust x and y to handleMouseWheel() for consistencyTorbjörn Andersson
This means x and y has the same meaning as in the other handlers, e.g. handleMouseUp(). Though as far as I can tell, these coordinates aren't actually used anywhere at the moment.
2014-04-01GUI: Add Tab cycling to TabWidgetZerophase
Tab and Shift-Tab can now cycle between each Tab of the Edit Game menu.
2014-02-18GUI: Make GPL headers consistent in themselves.Johannes Schickel
2012-05-03GUI: Implemented pressed state for buttonsOleksiy Kurochko
2012-03-02KEYMAPPER: Map non-key custom input eventsTarek Soliman
This also makes the keymapper be in charge of keymapping logic
2012-02-24GUI: Fix "clear" buttons after theme switch (bug #3482459)Torbjörn Andersson
Because the "clear" buttons are very different between themes (in the Modern theme they have a graphical symbol, while in the Classic theme they have a letter), they have to be removed and re-added when reflowing the layout. This is patterned after how the LauncherDialog class handles the larger changes in layout. Removing widgets from a tab turned out to be trickier than I first thought, so I had to move the removeWidget() method from Dialog to GuiObject.
2011-10-31KEYMAPPER: Put the gui keymap pushing/popping back in GuiManager::runLoopTarek Soliman
This because theoretically the GUI could be run without a dialog. This also fixes the situations where the GUI keymap gets popped more times than pushed. Thanks sev
2011-10-27KEYMAPPER: Skip GUI keymap when displaying active keymap in keymapper dialogTarek Soliman
This fixes a problem where opening the keymapper dialog would cause the current game keymap to be displayed as the active keymap but then changing the keymap selection back to it would cause the GUI keymap to be displayed as the active one. The GUI keymap was indeed at the top of the stack but that's not the desired effect. Also move the pushing and popping of the keymap to Dialog::Open/Close Also constantify the GUI keymap name
2011-05-12GIT: Clean up: Suppress SVN tags, now uselessstrangerke
2011-04-28JANITORIAL: Reduce header dependencies in shared codeOri Avtalion
Some backends may break as I only compiled SDL
2010-11-16GUI: Rename gui/GuiManager.* to gui/gui-manager.*Max Horn
svn-id: r54265
2010-11-16GUI: Move major widgets to new directory gui/widgetsMax Horn
Also renamed the source/header files, now they are more closely aligned to how we rename most other source files svn-id: r54264
2010-10-24Revert r53747: "GUI: added close() call to Dialog::runModal()"Willem Jan Palenstijn
It broke the launcher after adding new games. svn-id: r53765
2010-10-23GUI: added close() call to Dialog::runModal()Yotam Barnoy
This should prevent a small leak in the GuiManager when adding the dialog to the stack. Check for any regressions. svn-id: r53747
2010-06-15Fix spelling, cleanupMax Horn
svn-id: r49843
2009-06-06GUI: Tweaked the launcher so that TAB switches focus between the list and ↵Max Horn
the quick search field svn-id: r41311
2009-05-18Fix bug #2791868: "GUI: Glitch when closing menu after hovering on option"Eugene Sandulenko
svn-id: r40702
2009-02-06Reverted previous commit.Vicent Marti
svn-id: r36226
2009-02-06Removed special case when redrawing the dialog stack. Fixes bug #2555710 and ↵Vicent Marti
several lesser graphical glitches with classic theme. svn-id: r36225
2009-01-11Merge in Virtual Keybpard & KeyMapper branch,Eugene Sandulenko
- Merge is perfromed in order to not let rotting the code - Makefile modifications were avoided Stuff to resolve: - Circular dependency of common/vkeybd from graphics/ - Make it compilable (?) - Add some keyboards - Decide on the key bindings svn-id: r35813
2009-01-02Fixed crash when returning to launcher from a 640x480 game running with a ↵Johannes Schickel
non 1x scaler. svn-id: r35686
2009-01-02Renamed gui/newgui.cpp -> gui/GuiManager.cpp and gui/newgui.h -> ↵Johannes Schickel
gui/GuiManager.h svn-id: r35668
2009-01-02Reverted the handling of mouse move events, now the slider widget should be ↵Johannes Schickel
highlighted correctly again. svn-id: r35667
2009-01-02Modified the way button highlights are processed when a widget is in ↵Johannes Schickel
dragging mode. This allows for example unhighlighting of a button when the user clicked on it but moved the mouse away. svn-id: r35666
2009-01-02Got rid of GuiManager::clearDragWidget instead handle it via a new widget ↵Johannes Schickel
flag WIDGET_IGNORE_DRAG. svn-id: r35662
2009-01-01Revamping the handling of GUI themes a bit:Max Horn
* Moved the code which handles fallback to the built-in theme from ThemeEngine to GuiManager * Changed ThemeEngine::init() to only init&load the theme; no more messing with the overlay * Commented to a somewhat obscure line in the GuiManager event loop (taking eriktorbjorn's original commit message for that change as comment text) * Cleaned up the way the Dialog constructor ensures that the current Theme is correctly setup * Got rid of varios members of ThemeEngine * Changed ThemeEngine members _screen and _backBuffer from Surface pointers to just plain Surfaces * Changed ThemeEngine::loadFontFromArchive to use _themeArchive instead of creating an Archive from scratch * Renamed ThemeEngine::getThemeFileName() to getThemeId() (and some associated tweaks) * Lots of further cleanup and tweaks svn-id: r35653
2008-12-25Renamed NewGui to GuiManagerMax Horn
svn-id: r35544
2008-12-22Fixed indentation and removed whitespaces at the end of lineJordi Vilalta Prat
svn-id: r35481
2008-11-12GUI: Got rid of most 'built-in' variablesMax Horn
svn-id: r35018
2008-11-10Merged GUI::Theme and Gui::ThemeEngine into the same class, GUI::ThemeEngine.Vicent Marti
Massive cleanup. svn-id: r34983
2008-08-13Bug fix: Widget removal from dialog now handled properlyStephen Kennedy
svn-id: r33841
2008-08-13Finished legacy API cleanup. Removed all legacy code.Vicent Marti
Possible regressions. svn-id: r33833
2008-08-07Game Options menu parsing.Vicent Marti
Added support for importing layouts inside other layouts. Misc bugfixes. svn-id: r33676
2008-08-05Options menu layout parsing, featuring the brand new FATPOPUPS.Vicent Marti
svn-id: r33651
2008-07-17Rendering pipeline (almost) fixed. This time for real.Vicent Marti
svn-id: r33092
2007-11-04- made Widget::_flags privateJohannes Schickel
- reworked state (enabled/disabled/highlighted) handling of widgets - cleanup in ModernTheme.cpp svn-id: r29403
2007-09-19Merged common/stdafx.h into common/scummsys.h. All referencing files have ↵Nicola Mettifogo
been updated. svn-id: r28966