Commit graph

330 commits

Author SHA1 Message Date
Kp 6ff14b7688 Cache canvas in keypad.cpp 2017-03-10 01:22:25 +00:00
Kp dff67dad1b Cache canvas in inputbox.cpp 2017-03-10 01:22:24 +00:00
Kp 8d5ca033e1 Cache canvas in icon.cpp 2017-03-10 01:22:24 +00:00
Kp 9d4e1e307c Shorten ui_dialog_do_gadgets 2017-03-10 01:22:24 +00:00
Kp 0dc59ab3f2 Simplify ui_dialog_handler switch 2017-03-10 01:22:24 +00:00
Kp 97cf921b72 Cache canvas in ui_draw_checkbox 2017-02-11 21:42:46 +00:00
Kp 2725ea02c2 Cache canvas in ui_draw_button 2017-02-11 21:42:46 +00:00
Kp 69a4857ba5 Pass canvas to ui_draw_box_in1 2017-02-11 21:42:44 +00:00
Kp d4aa43c17e Cache canvas in ui_draw_scrollbar 2017-02-11 21:42:37 +00:00
Kp 7a6818eb01 Fold ui_draw_checkbox calls 2017-02-11 21:42:36 +00:00
Kp 842bd7a649 Pass canvas to ui_string_centered 2017-02-11 21:42:36 +00:00
Kp aa9b9a8346 Pass canvas to ui_draw_box_in 2017-02-11 21:42:36 +00:00
Kp 04c7f7c790 Pass canvas to ui_draw_box_out 2017-02-11 21:42:35 +00:00
Kp a51b071053 Pass canvas to ui_draw_frame 2017-02-11 21:42:35 +00:00
Kp 5636a85f3c Pass canvas to ui_draw_shad 2017-02-11 21:42:35 +00:00
Kp cf1f5df3cc Pass canvas to Vline 2017-02-11 21:42:35 +00:00
Kp f9cb598b0f Pass canvas to Hline 2017-02-11 21:42:35 +00:00
Kp 13320c8011 Fold ui_draw_button calls to gr_rect 2017-02-11 21:42:34 +00:00
Kp e765f8b744 Reorder ui_draw_button to support folding 2017-02-11 21:42:34 +00:00
Kp f28a5e77f1 Fold ui_draw_button calls to gr_set_fontcolor 2017-02-11 21:42:34 +00:00
Kp 554daa61cc Pass font to ui_get_button_size 2017-02-11 21:42:34 +00:00
Kp ae33aaafc1 Pass canvas to gr_set_fontcolor 2017-02-11 21:42:32 +00:00
Kp c16b7763e9 Remove unused ui_draw_line_in 2017-02-08 23:34:41 +00:00
Kp 5da784dbed Pass canvas to gr_{,u}string 2017-01-08 22:32:00 +00:00
Kp 1ef6b9d5bc Pass font to gr_get_string_size 2017-01-08 22:31:59 +00:00
Kp 0480ba8030 Pass canvas to gr_string(int,int,const char*,int,int) 2017-01-08 22:31:59 +00:00
Kp 0905aefa0a Pass canvas to gr_rect 2017-01-01 00:45:45 +00:00
Kp 794dcce327 Pass canvas to gr_urect 2017-01-01 00:45:44 +00:00
Kp dac1a69f7c Pass canvas to gr_ubox 2017-01-01 00:45:44 +00:00
Kp 7439949595 Pass canvas to gr_uline 2016-12-29 03:27:10 +00:00
Kp dc881ec12d Merge pull #266 into master 2016-11-19 18:09:26 +00:00
Kp 6db96d1a6d Fix file.cpp -Wunused-but-set-variable
Commit 1c8ad24 removed all reads of `wind`, but did not remove its
assignment or declaration.  This breaks the build with gcc due to
-Wunused-but-set-variable.

Fixes: 1c8ad24da3 ("Check for window_event_result::deleted for ui_get_filename polling loop")
2016-11-19 17:24:51 +00:00
Kp 98afafb80f Fix gadget.cpp -Wunused-but-set-variable
Commit 917f079 removed all reads of `wind`, but did not remove its
assignment or declaration.  This breaks the build with gcc due to
-Wunused-but-set-variable.

Fixes: 917f079f02 ("Check for window_event_result::deleted in ui_dialog_do_gadgets")
2016-11-19 17:24:51 +00:00
Chris Taylor cc3f35649f Change all occurrences of "Couldn't" to "Could not" for consistency ("Could not" is more common and wins).
Not touching TXT_COULDNT because it's stored separately in hog file.
2016-11-13 13:27:18 +08:00
Chris Taylor 1761d696fe Check if dir is empty string the more efficient way in file_getdirlist 2016-11-13 12:49:08 +08:00
Chris Taylor 5f19a3cba9 Remove redundant checks and initialisations recently added for editor 2016-11-13 12:44:53 +08:00
Chris Taylor 2d5d24cedc Fix freeze when clicking on 'Help' menu in editor
The functions med-mark-start and med-mark-end don't exist - that's fine, still read the rest of the menus, so it can actually properly 'hide' the help menu after it's clicked on.
2016-11-11 18:11:14 +08:00
Chris Taylor ac438f4cc2 Allow the user to carry on as usual if any of the editor files are missing (i.e. before editor was loaded).
If a game was playing, continue playing. If it was in the main menu, return to the main menu. (If all files are put in place the editor can load again.)
2016-11-11 16:09:57 +08:00
Chris Taylor e29a4513b6 Allow empty string to be passed to file_getdirlist
This allows the open/save dialogs to work in the editor when a filename without a path separator is passed (which is the default)
2016-11-11 16:09:57 +08:00
Chris Taylor 46297c151e Remove ui_gadget_delete_all
As the UI_DIALOG client is now responsible for freeing all gadgets (via unique_ptr's), this function now causes issues where it attempts to access freed gadgets (resulting in std::runtime_error("unknown gadget kind") exception when closing the AI Properties dialog on my Macbook, for example). Removing the offending function fixes the issue.
2016-11-11 16:09:57 +08:00
Chris Taylor 9511f65a90 Declare some local window_event_result vars later (clarity) 2016-10-31 14:58:34 +08:00
Chris Taylor 7ac820248c Use new event_process_all() for event loops that check for window_event_result::deleted (which is most of them) 2016-10-29 20:06:01 +08:00
Chris Taylor 1c8ad24da3 Check for window_event_result::deleted for ui_get_filename polling loop
This is instead of using window_exists, which could give a false positive if a new window was allocated with the same pointer value as a deleted one.
2016-10-28 15:25:25 +08:00
Chris Taylor 917f079f02 Check for window_event_result::deleted in ui_dialog_do_gadgets
This is instead of using window_exists, which could give a false positive if a new window was allocated with the same pointer value as a deleted one.
2016-10-28 08:40:50 +08:00
Chris Taylor 7b83123010 Pass window_event_result from a dialog handler all the way to the event system
In particular, window_event_result::deleted so the event system doesn't have to rely on the somewhat problematic window_exists. If a gadget is manipulated, it still returns at least window_event_result::handled so all the other gadgets in all the other windows don't have to be checked (that weren't already checked).
2016-10-27 19:42:48 +08:00
Chris Taylor 18062bf812 Make browser_handler (editor file opening dialog) return window_event_result::close instead of closing itself
This ensures the event system will know what's going on.
2016-10-27 17:38:20 +08:00
Chris Taylor 66de1a1823 Make sure if a UI_DIALOG handler returns window_event_result::close or window_event_result::deleted, it will be passed onto window_send_event 2016-10-27 17:12:17 +08:00
Kp 01f2932824 Pass grs_canvas &to window_create 2016-10-15 00:53:20 +00:00
Chris Taylor bc1c9ebd97 Merge branch 'unification/master' into allow_dialog_subclass
Conflicts:
	common/arch/sdl/window.cpp - Remove unused EVENT_WINDOW_CLOSED and w_callback local var
	common/ui/dialog.cpp - Remove unused EVENT_WINDOW_CLOSED
2016-10-10 14:40:11 +08:00
Kp 1af65071d7 Remove unused EVENT_WINDOW_CLOSED
Every callee that recognized EVENT_WINDOW_CLOSED did so only to
explicitly ignore it.  Remove the code to send it and all sites that
ignored it.
2016-10-10 00:25:15 +00:00
Chris Taylor 9631d319f6 Allow dcx::UI_DIALOG struct to be subclassed - step 3
Allow dcx::UI_DIALOG struct to be subclassed step 3. This step adds the destructor and makes sure the dialog is only deleted within the main dialog handler if the specific handler didn't return window_event_result::deleted.
2016-10-04 16:09:21 +08:00
Chris Taylor db665d8c33 Allow dcx::UI_DIALOG struct to be subclassed - step 2
Allow dcx::UI_DIALOG struct to be subclassed step 2. Make all the UI_DIALOG handlers return a window_event_result like everyone else.
2016-10-04 15:58:20 +08:00
Chris Taylor 60ac1eaad3 Replace delete dcx::window kludge with a better solution
Replace delete dcx::window kludge with a better solution: instead of requiring every handler to delete the window, add a window_event_result::deleted, which gets returned if the window was deleted by the handler, so window_close knows not to attempt to delete it again.
2016-10-04 14:05:44 +08:00
Chris Taylor 4d9eb4e743 Allow dcx::UI_DIALOG struct to be subclassed - step 1
Allow dcx::UI_DIALOG struct to be subclassed step 1. This step renames and reconfigures untyped_ui_dialog_create in dialog.cpp to be the main constructor. Also adds a template constructor that allows an event handler that takes a subclass of UI_DIALOG.
2016-10-04 11:29:19 +08:00
Chris Taylor 87617e8ac9 Allow dcx::window struct to be subclassed - step 3
Allow dcx::window struct to be subclassed step 3. This step adds the window destructor and both requires and implements the window to be deleted by the event handler/client in all cases.
2016-10-02 17:49:19 +08:00
Kp e06d8b33aa Reuse string_array_sort_func for file_sort_func
Both functions have the same implementation, so delete static
file_sort_func and use string_array_sort_func.
2016-09-04 19:10:43 +00:00
Kp 2e88fec559 Flatten some ui type hierarchy 2016-08-06 19:55:24 +00:00
Kp c636dc4b98 Convert various static const expressions to constexpr 2016-07-16 16:52:04 +00:00
Kp b6fd8572d1 Simplify ui_radio_set_value loop 2016-07-06 01:54:25 +00:00
Kp e92a7aea14 Use C++ static_cast for gadget downcast 2016-07-06 01:54:25 +00:00
Kp 65f68877aa Rewrite simple integer casts from C style to static_cast<>
This pass only targets commonly used standard types.

s/(\(\s*\(\(un\)\?signed\|int\|char\|short\|long\|float\|double\|s\?size_t\|\(u\?int[[:digit:]]\+_t\)\)\)\s*)\s*(/static_cast<\1>(/g
2016-06-16 03:56:44 +00:00
Kp 1b12a3f7ef Add parentheses around target of more complicated casts
C casts do not require parentheses.  C++ casts require grouping around
the target.  Prepare for conversion to C++ casts by adding otherwise
unnecessary parentheses around the target of some C casts.

This pass attempts to process expressions that involve parenthesized or
bracketed subexpressions, but only if those subexpressions do not
themselves contain parenthesized or bracketed subexpressions.

	(int) f(1);	// changed
	(int) f(g());	// not changed

perl -p -i -e 's/(\(\s*((?:un)?signed|int|char|short|long|float|double|s?size_t|(?:u?int[[:digit:]]+_t))\s*\**\s*\)\s*)([&+-]?)([[:alnum:]_.]+\s*->\s*)*([[:alnum:]_.]+)((?:\s*(?:\[[^][]*\])*|(?:\([^()]*\))*))(\s*([;+>*\/^%,|&<>])|$|(\s*-\s*[^>]))/\1\(\3\4\5\6\)\7/g'
2016-06-12 03:45:37 +00:00
Kp bc30ccd216 Rewrite cast of (sbyte) to standard type int8_t
s/(sbyte)\s*\(\w\)/(int8_t) \1/g
2016-06-12 03:45:37 +00:00
Kp 1789643480 Remove UserError on unknown MED function
Jayman2000 reports that users who do not update their MED.MNU after
updating to 8b61b9f ("Remove unused symbols") receive an "editor crash"
on startup.  This is not a crash, but instead is poor error handling in
menubar.cpp, which calls UserError instead of ignoring the offending
line.  Calls to UserError are fatal, but do not crash the program.
Replace that call with a con_printf(CON_URGENT) and ignore the line.

Additionally, change the handling for excess menus and for excess menu
items to con_printf+ignore instead of UserError.

Reported-by: Jayman2000 <https://github.com/dxx-rebirth/dxx-rebirth/pull/190>
Fixes: 8b61b9f0db ("Remove unused symbols")
2016-04-03 17:50:42 +00:00
Kp 27cef20eb3 Move namespace dsx handling to dsx-ns.h 2016-03-19 19:08:10 +00:00
Kp 08de1bbff0 Remove cv_color
It is only ever set to 0 or copied from other canvases.  Set it to zero
everywhere.
2016-02-12 04:02:28 +00:00
Kp f4e1ebb576 Remove unnecessary gr_setcolor calls 2016-02-12 04:02:28 +00:00
Kp e09a590e6f Pass color to Vline 2016-02-12 04:02:28 +00:00
Kp 76d0e01b6e Pass color to Hline 2016-02-12 04:02:28 +00:00
Kp de08a67321 Pass color to gr_ubox 2016-02-12 04:02:28 +00:00
Kp 23047b1165 Pass color to gr_rect 2016-02-12 04:02:28 +00:00
Kp 35a4736df0 Pass color to gr_urect 2016-02-12 04:02:28 +00:00
Kp 053901b62b Pass color to gr_uline 2016-02-12 04:02:28 +00:00
Kp b57f08c798 Use partial_const_range 2016-02-12 04:02:28 +00:00
Kp eb3fe7acdb Remove sprintf from menubar.cpp 2016-01-09 16:38:16 +00:00
Kp dc8c0323d8 Uninline namespace dcx 2015-12-13 18:00:49 +00:00
Kp 22bd3ce8d8 Use inline namespace dcx for common/ui 2015-12-05 22:57:24 +00:00
Kp ed55763603 Remove unused symbols 2015-12-04 03:36:31 +00:00
Kp dad504cfef Fix some -Wshadow warnings 2015-11-26 02:56:54 +00:00
Kp 50f672ba34 Reuse computed string length 2015-09-29 02:41:22 +00:00
Kp d9cef82f81 Allow nullptr for gr_get_string_size 2015-09-29 02:41:22 +00:00
Kp 17b1943c5e Mark various per-file structures as static 2015-08-12 03:11:46 +00:00
Kp 968cdbecf4 Add non-aborting UserError for user-caused fatal errors 2015-06-16 03:15:40 +00:00
Kp 06c363fb19 Fix UI_GADGET -fno-inline build
Fixes: 95e3ac1e5b ("Use integral_constant for UI kind")
2015-06-11 03:06:58 +00:00
Kp 25186ca984 Remove write-only keyd_last_released 2015-05-28 03:08:38 +00:00
Kp badad2ef33 Remove write-only keyd_last_pressed 2015-05-28 03:08:38 +00:00
Kp bdee338e34 Preserve array size for ui_get_filename 2015-05-09 17:38:58 +00:00
Kp 649993982f Enable tail call optimization in menubar_close 2015-05-09 17:38:58 +00:00
Kp fc4b686d9d Store PHYSFS_list element count in list when needed 2015-05-09 17:38:57 +00:00
Kp 1d08cb6058 Fix file_get*list nullptr without constructor inheritance 2015-05-05 03:20:42 +00:00
Kp c3925353fd Use null_sentinel_iterator for PHYSFS_list_t 2015-04-26 20:15:51 +00:00
Kp 143c536c77 Use PHYSFS_list_t for more functions 2015-04-26 20:15:50 +00:00
Kp 44adc83ca4 Use std::remove_if in file_get*list 2015-04-26 20:15:50 +00:00
Kp f00ec13c0f Use std::move_backward for file_getdirlist 2015-04-26 20:15:50 +00:00
Kp 08ee591e21 Fix ODR collision between ui/file browser and main/menu browser 2015-04-22 02:44:30 +00:00
Kp 150e2d2686 Convert local arrays to array<> 2015-04-19 04:18:49 +00:00
Kp 2f92078413 Move ui_add_gadget_scrollbar arrows off stack 2015-04-02 02:36:56 +00:00
Kp f88eaf43ac Make UI_GADGET_LISTBOX char* const 2015-04-02 02:36:54 +00:00
Kp 92b6cd3883 Replace ui_create_dialog specialization with helper
Rename ui_create_dialog<void *> specialization with free function
untyped_ui_create_dialog.  GCC 4.6 incorrectly considers a
specialization to be a redundant declaration, causing a
-Wredundant-decls failure with the specialization form.

Fixes: be041a9cfc ("Add type checking for ui_create_dialog")
2015-04-02 02:36:52 +00:00
Kp d04e7902ee Make file_get*list static 2015-03-22 18:49:21 +00:00
Kp 383e7703b6 Use ntstring in file_getdirlist 2015-03-22 18:49:21 +00:00
Kp fca381727c Add wrappers for screen width/height 2015-03-22 18:49:21 +00:00
Kp f900d4a5ee Remove RAIIdmem::operator pointer
Mac OS X defines uint_fast32_t to unsigned int, causing ambiguous
overloads between RAIIdmem::operator[](std::size_t) and
RAIIdmem::operator[](int).  Adding a disambiguating overload for OS X
breaks Windows.  Remove operator pointer and operator[].  Rely on the
inherited operator[] for indexing.  Require users to call ->get() to
convert to a simple pointer.

First btb ambiguity reported: https://github.com/dxx-rebirth/dxx-rebirth/pull/34
Second btb ambiguity reported: https://github.com/dxx-rebirth/dxx-rebirth/pull/43
2015-02-17 03:52:59 +00:00
Kp f38aec1212 Remove string copying in GetKeyDescription 2015-01-29 04:27:35 +00:00
Kp 71ec47b32e Refactor ui_pad_activate 2015-01-29 04:27:35 +00:00
Kp ff4a0ccd70 Fix RAIIdmem array usage
Some RAIIdmem instances managed a T[], but were declared to manage a T.
2015-01-28 03:42:53 +00:00
Kp faee7c7302 Ignore empty lines when parsing pads 2015-01-28 03:42:53 +00:00
Kp 1110bed7bb Use RAIIdmem for ITEM text 2015-01-23 03:55:04 +00:00
Kp 84e3a03451 Remove unused parameters 2015-01-18 01:58:33 +00:00
Kp f7815810e8 Use RAIIPHYSFS_File to manage PHYSFS_File
Fixes a few leaks on error paths.
2015-01-17 18:31:42 +00:00
Kp 3bf1fd573c Pass window_select arg by & 2015-01-17 18:31:41 +00:00
Kp ee50d45e72 Pass window_send_event arg by & 2015-01-17 18:31:40 +00:00
Kp fccb6814f8 Pass gr_create_sub_canvas arg by & 2015-01-17 18:31:40 +00:00
Kp c2b7990550 Pass window_get_canvas arg by & 2015-01-17 18:31:40 +00:00
Kp d185324a26 Use range_for in menubar 2015-01-17 18:31:39 +00:00
Kp dc35b0ad88 Fix Win32 build 2015-01-03 23:44:32 +00:00
Kp a9998476a9 Use ntstring for UI_KEYPAD description 2014-12-22 04:35:48 +00:00
Kp df46499f85 Fix buffer overrun reading UI pad 2014-12-22 04:35:47 +00:00
Kp ba88926780 Fix potential null dereference parsing UI pad 2014-12-22 04:35:47 +00:00
Kp 0af323c24d Fix various buffer overruns parsing pad UI 2014-12-22 04:35:47 +00:00
Kp 2766114959 Make PHYSFSX_gets_line_t::line_t be array<> 2014-12-20 04:36:10 +00:00
Kp c53a8cc30f Initialize buttontext in UI_KEYPAD constructor 2014-12-20 04:36:10 +00:00
Kp 0bf2a6eb80 Return unique_ptr from ui_add_gadget_button 2014-12-20 04:36:10 +00:00
Kp c43feee61d Return unique_ptr from ui_add_gadget_listbox 2014-12-20 04:36:10 +00:00
Kp 1d363bbd5d Return unique_ptr from ui_add_gadget_scrollbar 2014-12-20 04:36:10 +00:00
Kp 3b4fbd0bd5 Return unique_ptr from ui_add_gadget_radio 2014-12-20 04:36:10 +00:00
Kp b16e8ecbec Return unique_ptr from ui_add_gadget_checkbox 2014-12-20 04:36:09 +00:00
Kp 413a316154 Return unique_ptr from ui_add_gadget_inputbox 2014-12-20 04:36:09 +00:00
Kp 89b1ff8795 Return unique_ptr from ui_add_gadget_userbox 2014-12-20 04:36:09 +00:00
Kp e1bb249176 Remove unused UI_GADGET_KEYTRAP 2014-12-20 04:36:09 +00:00
Kp 8d487b4883 Return unique_ptr from ui_add_gadget_icon 2014-12-20 04:36:09 +00:00
Kp f1885ee4d4 Pass creation context to new windows 2014-12-20 04:36:09 +00:00
Kp cf5e5620aa Deduce input box text length 2014-12-20 04:36:09 +00:00
Kp dbe882ea42 Fix memory leak in ui_messagebox 2014-12-20 04:36:08 +00:00
Kp 7cbf3c1e0e Use unique_ptr for browser 2014-12-20 04:36:08 +00:00
Kp 6a62d3b49d Cache KeyPad[n] address 2014-12-20 04:36:08 +00:00
Kp b9ceceda3a Use array<char,100> for UI_KEYPAD::buttontext 2014-12-20 04:36:08 +00:00
Kp 5600cea3ac Use array<unique_ptr<UI_KEYPAD>> for KeyPad 2014-12-20 04:36:08 +00:00
Kp d72fcfeef1 Remove unnecessary UI_GADGET* casts 2014-10-04 22:36:13 +00:00
Kp a8f853aa7a Pass d_event arg by const& 2014-10-04 22:36:13 +00:00
Kp 8750b6a4ad Switch d_event subclasses to C++ inheritance 2014-10-04 18:05:26 +00:00
Kp 85d04abf60 Propagate for variables in common/ui/menu.cpp 2014-09-26 02:42:15 +00:00
Kp d47ecc3bef Propagate for variables in common/ui/keypress.cpp 2014-09-26 02:42:15 +00:00
Kp b0e2188dd2 Propagate for variables in common/ui/keypad.cpp 2014-09-26 02:42:15 +00:00
Kp 92cf115de1 Propagate for variables in common/ui/file.cpp 2014-09-26 02:42:15 +00:00
Kp e7bd80c9c8 Propagate for variables in common/ui/dialog.cpp 2014-09-26 02:42:15 +00:00
Kp 703f60ac3f Fix -Wtype-limits warnings 2014-09-21 21:41:55 +00:00
Kp ec4bb62a2c Add break missed in C++ inheritance conversion 2014-09-08 00:08:17 +00:00
Kp 7d166a70e0 Prevent accidental RAIIdmem construction 2014-09-07 23:56:37 +00:00
Kp 425c4242c1 Use std::string for UI_GADGET_BUTTON text 2014-09-07 21:21:57 +00:00