Commit Graph

650 Commits

Author SHA1 Message Date
Pietro Gagliardi 78b49ae04d Started reworking window.cpp to get a feel for what's going to happen. This is a mess... 2016-04-26 22:44:40 -04:00
Pietro Gagliardi dd1d5c871e Migrated the container stuff. 2016-04-26 22:17:42 -04:00
Pietro Gagliardi 8f4678a1f0 Removed the resize timer from windows/utilwin.cpp. 2016-04-26 22:09:13 -04:00
Pietro Gagliardi 227c3b3ec1 Split the public functions out of winutil.cpp to organize things. Renamed uiWindowsEnsureSetParent() to uiWindowsEnsureSetParentHWND() to denote its intended use. 2016-04-26 22:06:12 -04:00
Pietro Gagliardi 37e83d133b Started the migration. Got rid of a bunch of cruft, including the old delayed resize logic (except for timers; will have to get that back out). 2016-04-26 19:57:13 -04:00
Pietro Gagliardi dda30cdb3c Started the new uiControl infrastructure. 2016-04-24 19:22:21 -04:00
Pietro Gagliardi cf51ec823f Got rid of toplevelOwning(); I didn't like that one. 2016-04-24 18:23:00 -04:00
Pietro Gagliardi bc0a1d43c9 Applied the new type system to the Windows backend and fixed some more C++ stupidity related to it. 2016-04-24 17:38:48 -04:00
Pietro Gagliardi f60178798f Removed common type code. 2016-04-24 15:08:48 -04:00
Pietro Gagliardi 7b0f930185 Removed all the type function declarations from all the controls. More TODOs. 2016-04-24 15:04:36 -04:00
Pietro Gagliardi e90da765e3 Fixed a simple typo. IT WORKS! Also shortened one of the debug log messages. 2016-04-24 00:54:31 -04:00
Pietro Gagliardi 1f90366edd strsafe is a crock that does not follow its own documentation. Switch to the equivalent vcrt functions instead. 2016-04-24 00:50:19 -04:00
Pietro Gagliardi d258ac1d1d Fixed the other compiler and linker errors. We have a build! But does it work? If it does it's time to really tune this rewrite down. 2016-04-24 00:33:42 -04:00
Pietro Gagliardi c53e1c0b7d More fixes. Halfway through the alphabet now. 2016-04-23 22:29:54 -04:00
Pietro Gagliardi 158db39b68 More fixes. 2016-04-23 22:23:07 -04:00
Pietro Gagliardi 5236aa5855 More compiler error fixes. 2016-04-23 22:15:33 -04:00
Pietro Gagliardi 47aff78aae More compiler error fixes. Warning fixes will come later. 2016-04-23 21:38:51 -04:00
Pietro Gagliardi e0a8c8ce60 More fixes. 2016-04-23 21:25:56 -04:00
Pietro Gagliardi 2e352db4aa Fixed the wide string nonsense once and for all. Didn't need to switch to char at all! 2016-04-23 20:26:37 -04:00
Pietro Gagliardi 050cc3aa16 Fixed some things so far. It looks like I can't have __FILE__, etc. turned into wide strings because the way to do so works *ahead of time* :| Have to restructure debug.cpp. 2016-04-23 17:31:59 -04:00
Pietro Gagliardi ee6fa439f7 And updated the makefiles. Let's test! 2016-04-23 16:55:34 -04:00
Pietro Gagliardi cef1f90634 Oh right, also changed this to me in control implementations. Forgot that. NOW we can fix up the makefiles and test. 2016-04-23 16:52:53 -04:00
Pietro Gagliardi 0200af0301 Oh I forgot a few things. First, the other .cpp_ files. 2016-04-23 16:49:46 -04:00
Pietro Gagliardi 0307e11bf2 Migrated ui_windows.h. Now to fix up the makefiles and test. 2016-04-23 16:47:44 -04:00
Pietro Gagliardi e916c2f5fc Migrated uipriv_windows.h. Mostly. 2016-04-23 15:46:39 -04:00
Pietro Gagliardi 0e24e16bda Converted the uiArea files to C++. Now to fill in the header files... 2016-04-23 15:39:51 -04:00
Pietro Gagliardi 686e1ee58b "Migrated" menu.c. That just leaves the uiArea code and patching up holes in the header files, then we can test the build and further refine everything. 2016-04-23 15:26:57 -04:00
Pietro Gagliardi 2c097f5587 Mostly migrated draw.c. 2016-04-23 12:47:15 -04:00
Pietro Gagliardi a8b6cab2ab Did a proper migration of d2dscratch.c. 2016-04-23 11:50:47 -04:00
Pietro Gagliardi fbef804608 Quick and dirty C++ conversions of box.c, tab.c, and window.c. I feel like I need another rewrite... 2016-04-23 11:22:46 -04:00
Pietro Gagliardi ff096410a8 More migrations. 2016-04-22 22:20:02 -04:00
Pietro Gagliardi f829a06a7c Migrated child.c. Ugh... 2016-04-22 21:36:19 -04:00
Pietro Gagliardi 805e5f9811 Migrated spinbox.cpp. Now for the containers I guess... 2016-04-22 20:47:29 -04:00
Pietro Gagliardi 5d954712ea Migrated datetimepicker.c. 2016-04-22 20:40:16 -04:00
Pietro Gagliardi 955203bfb8 Migrated container.c and radiobuttons.c. 2016-04-22 20:37:28 -04:00
Pietro Gagliardi 6ec5f4800d Migrated simple controls to C++. 2016-04-22 20:14:12 -04:00
Pietro Gagliardi b514ba7cb0 Got rid of UtilText and UtilSetText. 2016-04-22 20:04:30 -04:00
Pietro Gagliardi b49091b897 Migrated label.c and separator.c. 2016-04-22 20:03:10 -04:00
Pietro Gagliardi 1ada1b346c Migrated resize.c. 2016-04-22 19:51:33 -04:00
Pietro Gagliardi 027d1f15ee Migrated parent.c. 2016-04-22 18:11:20 -04:00
Pietro Gagliardi 9e90475e11 Migrated stddialogs.c. 2016-04-22 17:49:14 -04:00
Pietro Gagliardi 02b5285aa0 Some more filter procedure rewriting, preparing for the future dialog message hack attempt. 2016-04-22 14:56:09 -04:00
Pietro Gagliardi 960533ab1f Abstracted out the message filter stuff so we can add a dialog message filter to allow tab navigation anywhere next. 2016-04-22 14:36:21 -04:00
Pietro Gagliardi 6124d45c62 Migrated main.c. 2016-04-22 14:06:22 -04:00
Pietro Gagliardi 0e85afb3ff Migrated utilwin.c. 2016-04-22 13:52:02 -04:00
Pietro Gagliardi 7a4c73ff92 Migrated init.c. 2016-04-22 13:31:33 -04:00
Pietro Gagliardi 57fbea1f3e Added utf16dup(). Completely forgot about this. 2016-04-22 13:01:55 -04:00
Pietro Gagliardi 277fa5d6bd Migrated control.c, I think. Changing the current way uiControl works will wait for another branch. 2016-04-22 12:44:18 -04:00
Pietro Gagliardi dafdaa4de4 Migrated text.c. 2016-04-21 23:29:44 -04:00
Pietro Gagliardi 63ce320021 Migrated util.c. 2016-04-21 23:05:10 -04:00
Pietro Gagliardi f3cf43da21 Migrated debug.cpp. 2016-04-21 21:57:36 -04:00
Pietro Gagliardi 9c9dc9a23e Added line ending manipulation routines now, just to be sure. 2016-04-21 18:10:30 -04:00
Pietro Gagliardi eb48bc1732 Wrote up a utf16 with conversion and allocating-sprintf() functions. Changed the way deubgging will work. 2016-04-21 18:03:52 -04:00
Pietro Gagliardi 35b2b490bb Changed complain() for bugs in libui and control implementations to implbug(). 2016-04-21 16:29:34 -04:00
Pietro Gagliardi 3b4eeee7bb Whops, left some stuff over in events.cpp. Also added a comment. 2016-04-21 15:01:05 -04:00
Pietro Gagliardi a8e897c1ec Started rewriting ui_windows.h and uipriv_windows.h(pp). 2016-04-21 12:55:09 -04:00
Pietro Gagliardi 82b1b363f2 Quick fix in events.cpp. 2016-04-21 12:22:02 -04:00
Pietro Gagliardi 99aba5a3b8 Got rid of all the template cruft and other nonsense from events.cpp. 2016-04-21 12:20:37 -04:00
Pietro Gagliardi df190dc368 Templatized this. I feel dirty. 2016-04-21 11:22:34 -04:00
Pietro Gagliardi 87c2c4f3f7 "Moved" events.c to C++. 2016-04-20 22:10:04 -04:00
Pietro Gagliardi b9384c0e32 Quick fixes to the previous commit. 2016-04-20 20:21:57 -04:00
Pietro Gagliardi 6b7b5de743 Migrated alloc.c to C++. This is working already :v 2016-04-20 20:20:10 -04:00
Pietro Gagliardi 55116199ac Pruned, organized, and formatted winapi.hpp. 2016-04-20 19:51:30 -04:00
Pietro Gagliardi a7ff1e7c78 Moved the files that are already C++ out of the way so we can migrate them later and separate them from the already-migrated files. 2016-04-20 19:41:14 -04:00
Pietro Gagliardi 09c1a62a8e Moved most of the headers to C++. 2016-04-20 19:39:20 -04:00
Pietro Gagliardi 655e05463d Implemented the new font button stuff on Windows. 2016-04-20 14:17:55 -04:00
Pietro Gagliardi 721269b3eb Implemented colored text on OS X and Windows. 2016-04-19 18:45:16 -04:00
Pietro Gagliardi 5b74b2752e Decided to use character offsets instead of byte offsets for text layout attributes. This removes the shaky code from the OS X and Windows backends to compute a list of character offsets for byte offsets. The equivalent code for GTK+ to convert chars to bytes will be much more solid; it will be written next. 2016-04-19 14:39:33 -04:00
Pietro Gagliardi a1d0e669c8 Added some helpers for actually returning a font from the font button on Windows. Similar helpers are needed on other platforms. 2016-04-18 19:18:29 -04:00
Pietro Gagliardi 861b5f22df Finished changing the Windows font dialog and uiFontButton to manipulate IDWriteFonts directly. 2016-04-18 17:14:33 -04:00
Pietro Gagliardi b19a8c9c46 Okay, I made a mistake: we want uiFontButton to return uiDrawFonts, not uiDrawFontDescriptors. Started the work to change the Windows one likewise. 2016-04-18 15:31:52 -04:00
Pietro Gagliardi ccfa3d41a3 More work on the initial font and showing styles. I have a feeling my current approach is a mistake. 2016-04-18 13:32:48 -04:00
Pietro Gagliardi 4d025172fe And brought the new font out of the font dialog and into the font button. We should be good now... 2016-04-18 01:12:25 -04:00
Pietro Gagliardi dcbbced23b Implemented loading of the font dialog font. Now to save it too. 2016-04-18 00:56:13 -04:00
Pietro Gagliardi 97aad9a039 Added support routines for migrating DirectWrite attributes. 2016-04-18 00:41:17 -04:00
Pietro Gagliardi 7cf8420682 Hooked the Windows font button and font dialog together at last. More TODOs. Now we just need to actually convert everything to DirectWrite and implement the label. 2016-04-17 22:09:18 -04:00
Pietro Gagliardi 40d673fb01 Implemented the correct behavior for the initial display of the size combobox of the font dialog. At this point we can move straight to manipulating the uiDrawFontDescriptors. 2016-04-17 21:11:55 -04:00
Pietro Gagliardi 0e75a6f950 Properly implemented the size combobox. We're so close! 2016-04-17 20:10:14 -04:00
Pietro Gagliardi 39ea7e269f Implemented nearest style matches when changing families. Wow we're actually almost done here! 2016-04-17 19:37:03 -04:00
Pietro Gagliardi 156fae7bbb Implemented events and type-to-select for the Style combobox. 2016-04-17 19:22:37 -04:00
Pietro Gagliardi aa6778acbe Implemented type-to-search in the font dialog. 2016-04-17 19:03:34 -04:00
Pietro Gagliardi edef521ded Quick TODO resolution. 2016-04-17 16:49:50 -04:00
Pietro Gagliardi d45fdb4a3d Migrated the font dialog from drawing its own sample text to having a D2D scratch control do it. 2016-04-17 13:06:45 -04:00
Pietro Gagliardi 3bb2a0ab21 Added a Direct2D scratch control that will be used by the font and color dialogs we will implement. 2016-04-17 11:53:24 -04:00
Pietro Gagliardi cc7675ab5a More font dialog work: split out all the combobox manipulation functions into their own function, made the current selection part of the structure, made the font families item data to the family combobox, and changed the font face string function to use the dedicated font face string method (thanks Windows 7 ChooseFont sample program). 2016-04-17 01:34:05 -04:00
Pietro Gagliardi 46db0b30ee Oh fixed the font dialog not showing all styles thing; stupid me forgot that a IDWriteFontFamily is also a IDWriteFontList. 2016-04-16 22:46:39 -04:00
Pietro Gagliardi 9a1367c0bc More font dialog work. Ugh if only I could just use the Windows 7 sample code one... 2016-04-16 22:15:19 -04:00
Pietro Gagliardi f3ae17793d Quick compilation fixes. I really don't know what I'm doing right now. 2016-04-16 19:25:21 -04:00
Pietro Gagliardi ecbdddb703 More sample work. Ugh this is a mess I should just use Direct2D after all. 2016-04-16 19:07:17 -04:00
Pietro Gagliardi 351fc59b9f Started work on previewing samples of fonts in the new font dialog. This adds all the boilerplate, including sample positioning. Also tightens up the dialog a bit. Now just to implement the actual drawing. 2016-04-16 17:58:45 -04:00
Pietro Gagliardi 23ec771c86 Removed uiFontDescriptor.SmallCaps; on Windows this has to be applied to layouts. 2016-04-15 14:23:16 -04:00
Pietro Gagliardi cedb5394b4 Removed the small caps checkbox from the new font dialog. It turns out that the small caps in DirectWrite is applied to a text layout, not a part of a font like it is elsewhere. Do we even still need the custom font dialog? 2016-04-15 13:57:26 -04:00
Pietro Gagliardi 0ad767721d More font dialog stuff. 2016-04-15 13:18:06 -04:00
Pietro Gagliardi fa94298015 Split the function to extract the correct string of an IDWriteLocalizedStrings instance out into its own function. I'm not sure if I'll need the informational strings out of a font (need to see what the strings actually say first), but in case I do, this will help. 2016-04-15 10:15:05 -04:00
Pietro Gagliardi 0bc140cd46 Dropped uiDrawTextGravity. That has to do with vertical text, which we can both abstract into a higher level API and can't do yet because DirectWrite simply does not support vertical text on Windows 7 for reasons that escape logical thought. 2016-04-15 00:24:27 -04:00
Pietro Gagliardi 8ac3c53e0f More fontdialog.cpp work. This is gonna kill me... 2016-04-14 22:40:01 -04:00
Pietro Gagliardi d3c4b0cf4d More work on fontdialog.cpp. 2016-04-14 22:25:32 -04:00
Pietro Gagliardi 97d35571c1 Started writing a replacement for the standard ChooseFont() dialog that uses DirectWrite instead of GDI. 2016-04-14 21:35:50 -04:00
Pietro Gagliardi 88e797e2be Split the DirectWrite boilerplate to another C++ file so we can write a new font dialog with it, maybe. 2016-04-14 19:57:58 -04:00
Pietro Gagliardi edd9b2f133 "Implemented" uiFontButton on Windows. 2016-04-14 17:12:13 -04:00
Pietro Gagliardi 7f2194c383 Typo fixes in the previous commit. 2016-01-24 21:50:10 -05:00
Pietro Gagliardi ab0230b428 Added a function for scrolling uiAreas. Implemented on OS X; stubbed elsewhere. 2016-01-24 21:41:34 -05:00
Pietro Gagliardi a3344f0341 Two important changes to the Windows build:
1) cvtres is no longer used directly. MSDN says to send the .res files to link.exe; that runs cvtres for us (at least it seems to, accoring to Google results for error LNK1158). It'll also avoid some of the weird warnings in cvtres, like CVT4001.

2) (and more important, but it depended on 1) Command-line switches are now passed using - instead of /. This is because some versions of MinGW are buggy and treat anything that starts with a / as a MSYS filename that needs to be converted to a Windows pathname.

Update #16.
2016-01-19 16:40:00 -05:00
Pietro Gagliardi cb8323bee6 Decided that yes, for a single line the leading should not be included. 2016-01-16 18:22:27 -05:00
Pietro Gagliardi 32cc648e13 Diagnosed the root cause of an issue in a TODO; still need to fix it. 2016-01-16 16:48:10 -05:00
Pietro Gagliardi eb6e10350d Implemented the multiline stuff on Windows. Oh boy this is so broken everywhere... 2016-01-16 16:42:33 -05:00
Pietro Gagliardi 06fa877058 Updated an error message. 2016-01-14 03:29:08 -05:00
Pietro Gagliardi 454fabaf2b Implemented metrics on Windows and fixed Unicode conversion in uiDrawNewTextLayout(). 2016-01-13 00:54:52 -05:00
Pietro Gagliardi 09458c794a Ported the new drawing system to Windows. 2016-01-12 18:14:48 -05:00
Pietro Gagliardi 0ec7d91e22 Filled in the text coordinate conversion functions on Windows. 2016-01-09 18:22:51 -05:00
Pietro Gagliardi ef54b99b93 Fixed text rendering on Windows. Woo, it all works so far! 2016-01-09 02:23:01 -05:00
Pietro Gagliardi a826fd7516 Wrote the text drawing code on Windows. Now to build and test. 2016-01-09 01:07:48 -05:00
Pietro Gagliardi 6a15e23897 Set up saner handling of sonames at build time. 2016-01-05 11:51:36 -05:00
Florent Clairambault e24c8f6440 Merge remote-tracking branch 'upstream/master' 2016-01-02 13:27:08 +01:00
Florent Clairambault c204e47b72 Various fixes around makefiles
* $PREFIX is uppercase (I have no idea why I put it lowercase before).
* "install" rules is OS specific and moved to new OS specific files. So that they can be included last.
* "examples" rule defines the list of examples to execute.
* Travis launches the "test" rule.
2016-01-01 23:19:14 +01:00
Pietro Gagliardi 5d40eff32a Added Windows 7 compatibility to the manifest. 2015-12-31 19:58:03 -05:00
Pietro Gagliardi c5d4813dec Stubbed out the text drawing functions on Windows too. 2015-12-31 12:30:53 -05:00
Pietro Gagliardi 6a5997cc1a More notes. 2015-12-23 15:22:01 -05:00
Pietro Gagliardi 5698d84cf3 More text rendering stuff. And given how it appears I have to render DirectWrite data into a Direct2D path geometry, I might be a little bit too much in over my head here... 2015-12-23 15:19:40 -05:00
Pietro Gagliardi 9efb452b2e Implemented the font family listing on Windows. 2015-12-22 20:01:53 -05:00
Pietro Gagliardi 5267489f0b Now entering Valhalla. 2015-12-22 16:00:51 -05:00
Pietro Gagliardi a1d2c2b9fd Oh that's fucking wonderful, dwrite.h is C++-only. This is gonna make things extra wonderful... 2015-12-22 15:51:16 -05:00
Pietro Gagliardi e63f73e240 TODO elaboration. 2015-12-22 01:06:18 -05:00
Pietro Gagliardi 51d7cabfd9 More TODOs. 2015-12-22 01:02:06 -05:00
Pietro Gagliardi 0b68fc6931 More TODOs. 2015-12-22 00:43:48 -05:00
Pietro Gagliardi f04bbe1bdc Laid the foundation for text rendering into uiAreas on Windows. GTK+ and Cocoa backends need no special setup (we can start using Pango and Core Text respectively without extra initialization). Not sure when I'll actually add the APIs to draw text, but hopefully it's soon because I really really really need to start working on what I was actually going to USE this library for, and text rendering is the last major prerequisite. 2015-12-22 00:35:52 -05:00
Pietro Gagliardi af374ed859 Implemented redrawing on scrolling and adjusting scrolling on resizing and actually implemented scrolled drawing correctly on uiArea on Windows. 2015-12-19 14:43:34 -05:00
Pietro Gagliardi 13fa2e213d Took scrolling into account on uiArea with drawing (untested) and mouse events (tested). This is the preliminary work for moving scrolling from pixels to DIPs. But first, a test of scrolled drawing. 2015-12-18 22:06:48 -05:00
Pietro Gagliardi adc72c9d0b Implemented the other areautil.c functions. 2015-12-18 21:38:27 -05:00
Pietro Gagliardi 5e90cbcb93 Started a windows/areautil.c for miscellaneous functions, mostly (completely for now) having to do with coordinates and sizes. Right now it only has renderTargetGetSize(). 2015-12-18 21:15:40 -05:00
Pietro Gagliardi 444a7d3045 Fixed mouse capture behavior. It's not as clean as it could be, but it'll do. 2015-12-18 19:38:21 -05:00
Pietro Gagliardi 4b114f2764 Started the implementation of mouse crossing on Windows. 2015-12-18 18:06:45 -05:00
Pietro Gagliardi ce042eb12a Added an expository comment to windows/area.c. 2015-12-18 15:05:49 -05:00
Pietro Gagliardi 4edcddce14 Fixed the ID2D1RenderTarget::GetSize() madness a *SECOND* time. Urgh. Also removed a now-irrelevant TODO. 2015-12-18 15:04:37 -05:00
Pietro Gagliardi 6d06e15390 More Windows uiArea migration and compiler error fixes. Now to figure out what happened with GetSize again... 2015-12-18 14:21:35 -05:00
Pietro Gagliardi e76b34b670 Split windows/area.c into a bunch of files to make it much more manageable. Also did half of the migration to the new uiArea system. 2015-12-18 12:00:46 -05:00
Pietro Gagliardi e390730e6f Reestablished the Windows build. Also fixed a small bug in windows/area.c. Now to re-establish the test! 2015-12-11 19:49:14 -05:00
Pietro Gagliardi 70886e4ade Moved the old build files away. Yes that's right folks, we're redoing the build system *again*! Isn't that *fun*? 2015-12-10 18:49:50 -05:00
Pietro Gagliardi 919e5f09cd Double-correction of previous commit. 2015-12-09 15:38:24 -05:00
Pietro Gagliardi 5f530c5bf7 More MinGW stuff. 2015-12-09 15:36:56 -05:00
Pietro Gagliardi be6555d885 More MinGW removal stuff. 2015-12-09 15:31:14 -05:00
Pietro Gagliardi 5e26720f18 Removed $ARCH from the build. 2015-12-09 13:49:13 -05:00
Pietro Gagliardi 0307e74e90 Added uiMultilineEntry on Windows. Fixed a misuse of std::condition_variable in the uiQueueMain test program. 2015-12-06 14:38:13 -05:00
Pietro Gagliardi 3394142357 Some TODO expansion. This was the active tab on my browser the whole time and I didn't even notice! 2015-12-05 20:37:29 -05:00
Pietro Gagliardi c5eef23930 More TODOs. 2015-12-05 20:31:57 -05:00
Pietro Gagliardi 88f9c7ea19 Quick comment update for previous commit. 2015-12-04 23:49:04 -05:00
Pietro Gagliardi f77955aefb Added uiQueueMain() (basically g_idle_add()) and implemented it on all platforms except Haiku. A test to come. After this we can start rewriting the Go package ui at long last. 2015-12-04 23:42:03 -05:00
Pietro Gagliardi 8084041139 Removed uiAreaHandler.RedrawOnResize(); Direct2D requires us to always redraw on resize (see previous commit). Added windows/amd64 to the example makefiles and updated them to use libui.xxx instead of new.xxx. 2015-12-04 21:04:51 -05:00
Pietro Gagliardi c2100a19be Implemented some changes to uiArea on Windows, thanks to instructions from Rick Brewster. Removing uiAreaHandler.RedrawOnResize() comes next. 2015-12-04 20:45:31 -05:00
Pietro Gagliardi d1c93a9956 Made relayouts on Windows faster by preventing an accidental requeue of a window that's being processed in the event that a layout change changes the minimum size (such as switching tabs). 2015-12-04 19:34:51 -05:00
Pietro Gagliardi d9343c0b4b More TODOs. 2015-11-30 09:12:56 -05:00
Pietro Gagliardi bf35167d40 More TODOs. 2015-11-28 16:36:08 -05:00
Pietro Gagliardi e6e264408f Implemented dialog parenting on Windows. Eliminated the dialog helper. uiArea still works (and still responds to key events), but IsDialogMessage() isn't being called for the active window anymore... 2015-11-28 10:53:48 -05:00
Pietro Gagliardi 7646e8303d Fixed a small bug in the uiArea message filter. 2015-11-27 23:00:57 -05:00
Pietro Gagliardi 09129229fd Fixed assorted MSVC uiArea issues. 2015-11-27 22:44:42 -05:00
Pietro Gagliardi 14887ad7e3 Fixed a logical error in the uiArea message filter. 2015-11-27 21:53:17 -05:00
Pietro Gagliardi 3a5a4557ab Switch uiArea from using a custom message pump to using a message filter for input handling. This allows us to rewrite the dialog system to avoid needing to block ALL windows and set a proper parent window. 2015-11-27 21:45:30 -05:00
Pietro Gagliardi f5a2759b09 Dropped utarray in favor of our ptrArray. This should get rid of our strdup woes. 2015-11-27 20:38:21 -05:00
Pietro Gagliardi 99176a1d10 Disabled compiler warnings for system headers on MSVC. Removed /Wp64; it's a no-op on VS2013 (our minimum supported version). 2015-11-27 20:07:23 -05:00
Pietro Gagliardi d29d36a6cd Fixed assorted build errors in the MSVC build. It works! And MinGW-w64 will need isolation awareness... 2015-11-27 19:59:46 -05:00
Pietro Gagliardi abd99a325b Integrated the Common Controls 6 manifest into libui.dll. While it does work, themes don't work, and I wonder if it's because of isolation awareness. Time to write an nmakefile! 2015-11-27 13:35:24 -05:00
Pietro Gagliardi b8be92bc45 More notes. 2015-11-27 12:35:23 -05:00
Pietro Gagliardi bd354fd651 More TODOs. 2015-11-27 12:21:40 -05:00
Pietro Gagliardi f93d9a4c91 More WPF foundations/boilerplate work. 2015-11-25 14:38:40 -05:00
Pietro Gagliardi 980b93381b Fixed alpha transparency on Haiku, or so it seems. Assorted other notes too. 2015-11-23 19:12:11 -05:00
Pietro Gagliardi c40e80d5a5 Added C++ to the build and started writing the actual Haiku code. I think this isg oing to have to require a GCC 4 hybrid... 2015-11-17 11:49:23 -05:00
Pietro Gagliardi 858ff1d64f Quick makefile change. 2015-10-17 10:22:43 -04:00
Pietro Gagliardi c9b241a7b6 More makefile work. 2015-10-17 10:20:31 -04:00
Pietro Gagliardi 260a7f4879 More makefile fixes. 2015-10-16 23:33:53 -04:00
Pietro Gagliardi f19d3cd0c7 More makefile work. 2015-10-16 22:49:54 -04:00
Pietro Gagliardi 790edf0df8 Assembled a new make system. Not quite working the way I'd like yet, but definitely a start. 2015-10-16 20:55:09 -04:00
Pietro Gagliardi ab97e26efc Moved all the common stuff in a new folder common/. This is part of the makefile simplification. 2015-10-16 18:31:14 -04:00
Pietro Gagliardi 982bc989cd Cleaned up the makefile a bit. 2015-10-16 18:14:05 -04:00
Pietro Gagliardi b4cbf79cbb Implemented dashing on OS X. 2015-10-16 11:05:08 -04:00
Pietro Gagliardi 8119a69572 Implemented dashing on Windows. 2015-10-16 10:46:26 -04:00
Pietro Gagliardi 2b4ba6ad16 Implemented mouse event coordinates and proper render target size getting on Windows. 2015-10-14 09:31:31 -04:00
Pietro Gagliardi b5ac921988 Implemented clipping on Windows. Phew! 2015-10-13 13:20:25 -04:00
Pietro Gagliardi 2fd6ba8081 Switched from usin ptrarray to maintaining an array of structures to store context state on Windows. This is neeed because an ID2D1DrawingStateBlock does not store the clipping information (in fact, the clipping does not work quite the way we would like it...). 2015-10-13 10:47:54 -04:00
Pietro Gagliardi c6cdabe20d Preparation for proper, extensible state tracking and clipping on Windows. 2015-10-12 21:11:42 -04:00
Pietro Gagliardi dac5eea07a Fixed transforms on Windows. 2015-10-12 12:16:44 -04:00
Pietro Gagliardi 5f2a8474d9 Attempted to get things working on Windows. Result: argggggggggggggggggggggggggggh I need to write a matrix test suite. 2015-10-12 10:30:36 -04:00
Pietro Gagliardi 46e3fee40d Added a center point to scaling transforms. Fixed rotations on GTK+. 2015-10-12 01:43:12 -04:00
Pietro Gagliardi 0989454106 Implemented negative arcs on Windows. 2015-10-11 22:14:27 -04:00
Pietro Gagliardi b09cdb5137 Made 90° point toward y=+∞. 2015-10-11 20:24:06 -04:00
Pietro Gagliardi 0ae3ef918d Implemented the matrix stuff on Windows. Also fixed the signature of uiDrawMatrixSkew(). 2015-10-11 12:36:48 -04:00
Pietro Gagliardi f3a2635f8c Fixed circles in Windows once and for all. 2015-10-11 07:51:14 -04:00
Pietro Gagliardi 6fe77e12f9 More urgent TODOs. Groan... 2015-10-10 21:04:54 -04:00
Pietro Gagliardi 5b37dc9fbe Fully fixed arcs on the Windows backend, for real this time. 2015-10-10 10:48:10 -04:00
Pietro Gagliardi 22b38accee Got the Windows backend's arc code mostly working. It's still 360° arcs that cause problems... 2015-10-10 09:23:44 -04:00
Pietro Gagliardi 73d77ef38b Capped sweeps at 2π radians. 2015-10-09 22:00:41 -04:00
Pietro Gagliardi 2c7ed07747 Changed the arc functions to take a start angle and a sweep amount instead of a start angle and an end angle. This makes it easier to reason about sweeps > 2π radians. 2015-10-09 21:51:43 -04:00
Pietro Gagliardi 7075bea0f5 Added uiAreaQueueRedrawAll() and implemented on all platforms. NOW we can focus exclusively on the test suite. 2015-10-09 15:27:57 -04:00
Pietro Gagliardi 5da68c64b3 Implemented uiComboboxSetSelected() on OS X and Windows; fixed editable combobox minimum widths on OS X. 2015-10-09 14:39:26 -04:00
Pietro Gagliardi 1d4e341583 Fixed a memory leak in the Windows uiArea. 2015-10-09 12:41:01 -04:00
Pietro Gagliardi b0492cbde8 Fixed up more bits of uiArea on Windows. 2015-10-09 11:49:57 -04:00
Pietro Gagliardi e4e72e55bb Merged the Windows uiArea back into the main library. 2015-10-09 11:17:58 -04:00
Pietro Gagliardi e27781cce7 Integrated the test into the main packge. I'll need to handle a few corner cases here... 2015-10-08 19:20:06 -04:00
Pietro Gagliardi eb96d5edb0 Implemented the new combobox stuff on Windows. 2015-10-08 15:42:58 -04:00
Pietro Gagliardi 9dbc8a1ba2 Started writing the Uniscribe gunk. This is a mess... 2015-09-14 22:42:07 -04:00
Pietro Gagliardi c5e4c3a92d Fixed some bugs in the Windows uiArea code. 2015-09-08 12:11:01 -04:00
Pietro Gagliardi dab88e74f2 Fixed uiGroup children positioning on Windows. 2015-09-02 21:29:16 -04:00
Pietro Gagliardi eb7372f7c4 Fixed a memory leak. 2015-09-02 19:46:10 -04:00
Pietro Gagliardi 8df022f806 Fixed up uiSpinbox now that we can do it without having an extra container in the way. 2015-09-02 19:35:34 -04:00
Pietro Gagliardi 7abf662076 More TODOs. 2015-09-02 18:29:14 -04:00
Pietro Gagliardi 80a5f1ac29 More uiRadioButtons work. 2015-09-02 18:26:48 -04:00
Pietro Gagliardi a96e76a4b5 More TODOs. 2015-09-02 16:43:20 -04:00
Pietro Gagliardi 35a4098a35 Made the uiWindow grow when necessary. 2015-09-02 16:26:54 -04:00
Pietro Gagliardi 3f1b72721e Implemented uiTab minimum size and uiWindow resize restriction. 2015-09-02 16:02:06 -04:00
Pietro Gagliardi 54332b90fb Finally merged out the redo folder. 2015-09-02 13:48:06 -04:00
Pietro Gagliardi e3c64dc0d1 Removed what was left in the main folder. We are so fucking close.. 2015-09-02 13:47:18 -04:00
Pietro Gagliardi cefd262f42 More migration. Just control.c left, and then we can build. 2015-08-31 15:14:02 -04:00
Pietro Gagliardi 413ec1a2c3 More migration. 2015-08-31 13:37:56 -04:00
Pietro Gagliardi 3a607cbbf2 Moved back a whole bunch of Windows files. 2015-08-31 12:45:53 -04:00
Pietro Gagliardi ec4ac0d596 Started the migration of uiTab on Windows. Phew; we're getting close... 2015-08-31 11:31:42 -04:00
Pietro Gagliardi 99c37b9697 Wrote up the boilerplate needed for tab pages. 2015-08-31 10:55:33 -04:00
Pietro Gagliardi 411afe4480 "Migrated" uiSpinbox in the same way as with uiRadioButtons. I might need a container and a uiWindowsSpinboxEditHandle()... 2015-08-31 07:28:15 -04:00
Pietro Gagliardi 887c087920 Started the migration of Windows uiRadioButtons. There are two files here: OLDradiobuttons.c, which is the old code as is, and radiobuttons.c, which is the partially-migrated file. 2015-08-30 22:08:25 -04:00
Pietro Gagliardi 311a7d4124 More migration work. 2015-08-30 19:32:05 -04:00
Pietro Gagliardi f5cfdaddb9 Started work on reimplementing Windows API controls with parents. This handles uiGroup. Need to add child.c next. 2015-08-30 18:38:22 -04:00
Pietro Gagliardi 465d497cb6 Migrated all the single-HWND controls that don't have a child. Moment of truth time: do we require all controls to have a single HWND? Leaning toward yes. 2015-08-30 12:25:53 -04:00
Pietro Gagliardi d4bb41f4c0 Migrated uiButton on Windows to the new backend. Most controls will, fortunately, be this smooth. 2015-08-29 21:02:38 -04:00
Pietro Gagliardi 4f930ca8c3 Commit message withheld 2015-08-28 18:27:17 -04:00
Pietro Gagliardi 8213eac2d7 Moved everything up a directory level. 2015-08-27 12:05:11 -04:00
Pietro Gagliardi d98ca5dfd4 Removed more files from the top level. 2015-08-27 11:59:59 -04:00
Pietro Gagliardi 670907489b Removed some ancient Windows files. 2015-05-30 17:48:02 -04:00
Pietro Gagliardi 721d58d4b9 Brought init.c, text.c, and util.c back on Windows. Migrated util.c; still need to do init.c. 2015-05-15 21:09:13 -04:00
Pietro Gagliardi 8594646e45 Migrated windows/group.c. Also forgot a line in windows/tab.c. 2015-05-15 21:06:52 -04:00
Pietro Gagliardi ab4c534360 Migrated windows/tab.c. 2015-05-15 18:54:13 -04:00
Pietro Gagliardi 7d0f250ba7 More migration of files that don't need changes. 2015-05-15 16:17:28 -04:00
Pietro Gagliardi bc9b995c4c Moved the basic controls back to the new Windows backend. More file clearout. 2015-05-15 16:14:22 -04:00
Pietro Gagliardi f380912665 Added sizing information acquisition to the new Windows backend; started clearing out the old windows/container.c. 2015-05-15 16:04:10 -04:00
Pietro Gagliardi 00e53ef547 Started cleaning out the old tree. 2015-05-14 19:29:41 -04:00
Pietro Gagliardi f100989803 Fixed up wording on some errors in windows/menu.c and unix/menu.c. 2015-05-13 10:25:54 -04:00
Pietro Gagliardi 9cca703b06 More uiGroup Windows work. 2015-05-13 10:24:24 -04:00
Pietro Gagliardi 4f267d49c6 More Windows uiGroup work. 2015-05-11 23:02:26 -04:00
Pietro Gagliardi 8f9c40daaa Added an initial implementation of uiGroup on Windows. 2015-05-11 22:53:51 -04:00
Pietro Gagliardi 5deac6cfd6 Made Windows resizes use SWP_NOREDRAW. This makes checking the Spaced box faster, at least. 2015-05-11 13:24:10 -04:00
Pietro Gagliardi a517beccae Added uiContainerUpdate() calls to each SetMargined(). 2015-05-11 12:42:13 -04:00
Pietro Gagliardi 2c9e63d8d2 Same as previous commits, but for uiContainer. We don't need to do these because everything that calls uiControlSetParent() (which should only ever be a uiContainer) should also be updating themselves afterward (or are about to be destroyed). 2015-05-11 12:20:41 -04:00
Pietro Gagliardi df376a5e0b Started to optimize container updating. Removed container updates from each new control set parent. 2015-05-11 12:16:28 -04:00
Pietro Gagliardi a625cc30ad sigh 2015-05-11 12:08:30 -04:00
Pietro Gagliardi d13c0f3cbd Revert "Attempted to improve the profiler a bit, making it more like a real profiler. It doesn't quite work yet."
It won't work. We spend most of our time in GetMessage(). Thanks to various people on Stack Overflow.

This reverts commit a342998263.
2015-05-11 11:46:34 -04:00
Pietro Gagliardi 573e411e2a Revert "Integrated idl2h into the main tree so we can custoize it in ui-specific ways; also moved windows/profiler.go to the new tools/ directory."
Adding runtime type checking obviates an actual GObject-like type system, which is out of scope.

This reverts commit 7a21bdec42.
2015-05-11 10:24:47 -04:00
Pietro Gagliardi 7a21bdec42 Integrated idl2h into the main tree so we can custoize it in ui-specific ways; also moved windows/profiler.go to the new tools/ directory. 2015-05-11 10:15:32 -04:00
Pietro Gagliardi a342998263 Attempted to improve the profiler a bit, making it more like a real profiler. It doesn't quite work yet. 2015-05-10 23:02:16 -04:00
Pietro Gagliardi c0c6b4fed6 Made all variables that refer to a tab page be called 'page'. 2015-05-10 21:22:22 -04:00
Pietro Gagliardi 721acd44a4 Used integer division in the profiler average column to make it easier to sort. 2015-05-10 17:42:28 -04:00
Pietro Gagliardi cb8a4872d5 Added a rudimentary profiler to the Windows backend. 2015-05-10 17:35:52 -04:00
Pietro Gagliardi 41030b0a03 Made it so uiContainer on Windows only updates when we ask it to resize, not on every WM_WINDOWPOSCHANGED. More TODOs. 2015-05-10 12:57:13 -04:00
Pietro Gagliardi bcafe6806a Made uiTab on Windows only resize when explicitly asked to rsize, not on every WM_WINDOWPOSCHANGED. This is important for making resizes smooth. 2015-05-10 12:54:11 -04:00
Pietro Gagliardi 24d63adb51 Migrated the Windows backend to the new bin. 2015-05-10 12:48:11 -04:00
Pietro Gagliardi a2cf4908a3 Started cleaning up bin handling. uiBin is now a real type and all of the things you need to do to a bin are its methods. 2015-05-10 12:36:14 -04:00
Pietro Gagliardi 4954d608f4 Got rid of a stray debugging line in windows/button.c. 2015-05-09 21:19:06 -04:00
Pietro Gagliardi 7bdc50c25a Inhibited uiEntryOnChanged() with uiEntrySetText() on Windows. 2015-05-09 21:18:27 -04:00
Pietro Gagliardi 349d54b2f1 More commentary and TODOs about the previous commit(s). 2015-05-09 16:04:54 -04:00
Pietro Gagliardi bd4716c949 Started code for handling WM_QUERYENDSESSION and its console equivalent. 2015-05-09 14:22:51 -04:00
Pietro Gagliardi 5e258c0c48 Implemented the Quit menu item shouldQuit() logic on Windows. 2015-05-09 10:53:38 -04:00
Pietro Gagliardi a6c86cc863 More Windows uninit stuff. 2015-05-08 17:17:03 -04:00
Pietro Gagliardi 3f3191ea7a More Windows uiUninit() implementation. 2015-05-08 15:01:23 -04:00
Pietro Gagliardi 04923399fe Implemented uninitMenus() on Windows. 2015-05-08 14:23:22 -04:00
Pietro Gagliardi 85ca2a0901 Wrote uninitAlloc() on Windows. 2015-05-08 14:05:16 -04:00
Pietro Gagliardi b60f17ee5a Added type names to the memory allocator on Windows. More TODOs. 2015-05-08 10:34:59 -04:00
Pietro Gagliardi 27d6994bdc Implemented stub uiUninit()s. 2015-05-07 22:32:17 -04:00
Pietro Gagliardi 6c9a122a7d Changed the default uiWindowOnClosing() behavior. Decided to keep the int return. 2015-05-07 20:01:17 -04:00
Pietro Gagliardi 34f55321e0 Added a [libui] and a newline to the message printed by complain(). 2015-05-07 19:34:45 -04:00
Pietro Gagliardi ab5975eeb5 More TODOs. 2015-05-07 18:14:21 -04:00
Pietro Gagliardi 727b6871bc Made uiFree(NULL) illegal to spot bugs. 2015-05-07 17:45:55 -04:00
Pietro Gagliardi efbdf14d5f Made all instances of SetWindowPos() and MoveWindow() use the same wrapper functions so they can all use the same flags. Only the SetWindoPos() that sets the initial size of a uiWindow is unaffected (since that is a special case). 2015-05-07 17:40:13 -04:00
Pietro Gagliardi 49595bb18d Set up proper -m flag manipulation for cross-compiling builds. 2015-05-07 16:02:34 -04:00
Pietro Gagliardi 598a499072 Changed ARCH on Windows to be amd64 for a 64-bit build instead of just 64 for consistency with the OS X one. 2015-05-07 15:47:29 -04:00
Pietro Gagliardi 2107595ce7 "Exported" uiSizing fields. 2015-05-07 14:33:46 -04:00
Pietro Gagliardi f74394fbac "Exported" uiSizingSys fields. 2015-05-07 14:22:31 -04:00
Pietro Gagliardi 6e4845f11f Fixed tab order on Windows. 2015-05-07 14:20:31 -04:00
Pietro Gagliardi 38a5341603 Fixed public/private namespace clobbering in the Windows backend and a wrong name in ui_darwin.h. 2015-05-07 12:58:33 -04:00
Pietro Gagliardi 91f7096257 Resolved a TODO; we were already doing the right hting. 2015-05-07 12:25:44 -04:00
Pietro Gagliardi bb617883d1 "Fixed" box padded application bug on Windows; more related TODOs. 2015-05-07 12:24:02 -04:00
Pietro Gagliardi 94da27c9ba Decided not to rewrite the resizing logic in windows/tab.c for now. Adjusted a few comments as well. 2015-05-07 10:14:49 -04:00
Pietro Gagliardi 316657e09e I'm wrong; read-only edit controls on Windows DO get their backgrounds from their parents. Thanks gamax92 for help confirming. 2015-05-07 00:23:35 -04:00
Pietro Gagliardi 6a1661fd91 Implemented read-only uiEntries on Windows. 2015-05-06 22:21:11 -04:00
Pietro Gagliardi 5128fed0af Implemented uiEntryOnChanged() on Windows. 2015-05-06 20:06:16 -04:00
Pietro Gagliardi 5b65c58715 Removed a stale TODO. 2015-05-06 18:56:12 -04:00
Pietro Gagliardi 329b4f29dd Implemented tab navigation across tabs on Windows. 2015-05-06 18:37:21 -04:00
Pietro Gagliardi c5e5fbd909 Laid the foundation for proper tab navigation in uiTabs. 2015-05-06 18:05:07 -04:00
Pietro Gagliardi d247e76866 Implemented uiTabInsertPageBefore() on Windows. 2015-05-06 14:09:20 -04:00
Pietro Gagliardi 956b78718f Migrated windows/tab.c to ptrarray and fixed the build. 2015-05-06 13:37:23 -04:00
Pietro Gagliardi 8c3ca7fcce Fixed WM_PRINTCLIENT on uiContainers in windows/container.c. It works. 2015-05-06 12:39:06 -04:00
Pietro Gagliardi 047913d1a6 Made paintContainerBackground() in windows/container.c respect the clip rect. 2015-05-06 11:30:09 -04:00
Pietro Gagliardi 74fc1aea45 Split out the parent drawing in windows/container.c into its own function. This is necessary to allow for clipping. 2015-05-06 11:10:28 -04:00
Pietro Gagliardi 7e0d79713b Changed the uiContainer code on Windows to use WM_PRINTCLIENT directly instead of creating the brush each time. Thanks to Barmak Shemirani (http://stackoverflow.com/questions/30066108/brush-origin-patblt-and-mapwindowrect-confusion) for inspiring me with this solution that I should have thought of myself =P 2015-05-06 02:20:08 -04:00
Pietro Gagliardi 526e9b81ea Fixed bin destruction handling on the Windows backend. 2015-05-06 00:52:24 -04:00
Pietro Gagliardi bc2e6d134b Started working on a pointer array implementation. This also means we'll need the C standard library for memcpy()/memmove(), so drop the DisableThreadLibraryCalls() TODO. 2015-05-05 22:55:02 -04:00
Pietro Gagliardi 657cbe2013 Updated a TODO. 2015-05-05 20:57:30 -04:00
Pietro Gagliardi 58540b2b2b Changed from GetWindowRect() in windows/contianer.c to get the parent's client size to GetClientRect(); we're only interested in the size, and WM_PRINTCLIENT is strictly for the client :/ It's still correct as far as I know (the old code used it). 2015-05-05 20:56:07 -04:00
Pietro Gagliardi 9f8d16b26a Revert "Switch to using DeferWindowPos() in Windows resizes. It doesn't optimize anything just yet (because it's still recursively invoked), but it can be optimized later (by not responding to container resizes and only using container updates); and more important, it puts (most of) the resizing invocations in one place."
Decided not to make the code that much more complicated.

This reverts commit f6fdf932e1.
2015-05-05 15:19:55 -04:00
Pietro Gagliardi f6fdf932e1 Switch to using DeferWindowPos() in Windows resizes. It doesn't optimize anything just yet (because it's still recursively invoked), but it can be optimized later (by not responding to container resizes and only using container updates); and more important, it puts (most of) the resizing invocations in one place. 2015-05-05 15:10:37 -04:00
Pietro Gagliardi f35d68907b More flicker work and TODOs. 2015-05-05 14:44:10 -04:00
Pietro Gagliardi 7f56079257 Disabled WM_PRINTCLIENT in uiContainer on Windows for now. 2015-05-05 14:37:25 -04:00
Pietro Gagliardi 4ba82c6eeb Started refactoring uiContainer painting on Windows to be more efficient and handle WM_PRINTCLIENT. 2015-05-05 14:00:55 -04:00
Pietro Gagliardi 93ead4043e Added a wrapper around MapWindowRect() to simplify error handling. This will be needed for future changes to windows/container.c. 2015-05-05 13:12:48 -04:00
Pietro Gagliardi 047d5aaa4d Added error checking to the container painting code. More TODOs. 2015-05-05 13:01:20 -04:00