Commit Graph

584 Commits

Author SHA1 Message Date
Emil Ernerfeldt 38e36fd806 Combo boxes has a scroll area
Closes https://github.com/emilk/egui/issues/75
2020-12-25 13:18:47 +01:00
Emil Ernerfeldt d3eba239ed Rename Painter::debug_arrow to Painter::arrow 2020-12-25 12:27:34 +01:00
Emil Ernerfeldt 36c15c4e41 Add egui::math::Rot2 rotation helper 2020-12-25 12:27:34 +01:00
Patrik Höglund bb469bf52f
Make it possible to set Glium windows as not resizable. (#69) 2020-12-22 15:20:38 +01:00
Emil Ernerfeldt 89937bf636 [egui_web] Auto-save app state to Local Storage every 30 seconds 2020-12-19 20:50:00 +01:00
Emil Ernerfeldt 8e9bce459f Move Painting demo to own window (and file) 2020-12-19 17:02:42 +01:00
Emil Ernerfeldt f9b1e88fe6 Constrain tooltips to fit within the screen 2020-12-19 16:16:36 +01:00
Emil Ernerfeldt 03d09a9b57 Turn on anti-aliasing in debug builds 2020-12-19 15:11:43 +01:00
Emil Ernerfeldt 75e2752a47 Tweak hyperlink color 2020-12-19 15:09:11 +01:00
Emil Ernerfeldt dd2f50e8ed Add #[must_use] to all widgets 2020-12-19 15:02:02 +01:00
Emil Ernerfeldt 99808d2df8 Implement Storage trait for egui_web:s local storage bindings 2020-12-19 14:58:00 +01:00
Emil Ernerfeldt 7ff5d4726b Change default window width 2020-12-19 14:55:17 +01:00
Emil Ernerfeldt 01c65b0dcb Replace Arc<Context> with struct CtxRef 2020-12-19 14:48:04 +01:00
Emil Ernerfeldt ce0ea74c9f Fix: The background of CentralPanel will now cover unused space too 2020-12-19 11:17:21 +01:00
Emil Ernerfeldt ea10add1cb Deprecate left/centered/right column functions in Ui 2020-12-19 11:14:59 +01:00
Emil Ernerfeldt 1e1bfa4dc7 Add ui.allocate_painter helper 2020-12-19 11:14:21 +01:00
Emil Ernerfeldt 58f36eb6ef A `Window` may now cover an existing `CentralPanel` 2020-12-18 23:45:33 +01:00
Emil Ernerfeldt c3c4f28a9d Added App::clear_color() that apps can use to specify background color 2020-12-18 22:44:26 +01:00
Emil Ernerfeldt b0e17638df trait App now has fn name() for specifying egui_glium window title 2020-12-18 22:30:59 +01:00
Emil Ernerfeldt 71449fe61c Only forbid warnings in release builds 2020-12-18 22:19:56 +01:00
Emil Ernerfeldt 0e2c4077cb Add '?' as fallback to the default replacement character 2020-12-18 13:06:50 +01:00
Emil Ernerfeldt d022765a3c Improve decimal logic for Slider and DragValue
* You can now control the minimum and maixumum number of decimals to show in a `Slider` or `DragValue`.
* `Slider` and `DragValue` uses fewer decimals by default. See the full precision by hovering over the value.
2020-12-18 10:21:00 +01:00
Emil Ernerfeldt d6d9c4828e Turn off `Window` title bars with `window.title_bar(false)`
You can still resize and move them assuming there is some area that
does not steal the drag input. In particular, if a scroll area covers
the window than dragging the window contents will scroll, not move it.

Closes https://github.com/emilk/egui/issues/66
2020-12-16 23:48:23 +01:00
Emil Ernerfeldt e4afba3bb8 Misc code cleanup 2020-12-16 21:59:33 +01:00
Emil Ernerfeldt 56502405f5 Tweak demo to work better on small screens (phones) 2020-12-16 21:57:13 +01:00
Emil Ernerfeldt 8af83bf93f Slight tweak of the default `Style` and font sizes 2020-12-16 21:56:24 +01:00
Emil Ernerfeldt 709e711364 Deprecated RawInput::screen_size and replaced with screen_rect 2020-12-16 21:52:28 +01:00
Emil Ernerfeldt 2c766aa540 Make RawInput::time an Option 2020-12-16 21:22:45 +01:00
Emil Ernerfeldt 413f5fd37a Allow windows to cover side panel if they do not otherwise fit 2020-12-16 20:35:24 +01:00
Emil Ernerfeldt 1c9fbc1588 Adjust default-size of Resize areas to fit within screen 2020-12-16 20:31:00 +01:00
Emil Ernerfeldt 91e5295db2 Add mouse-over explanation to duplicate ID warning 2020-12-16 20:29:46 +01:00
Emil Ernerfeldt 471314bb44 Fix edge-case in duplicate ID warning 2020-12-16 20:28:43 +01:00
Emil Ernerfeldt 8528d8c5f7 Update parking_lot_core
Required turning on features = ["wasm-bindgen"] in egui_web
2020-12-16 15:36:58 +01:00
Emil Ernerfeldt 0e0beece44 SidePanel::left and TopPanel::top now takes `impl Hash` instead of Id 2020-12-15 15:13:12 +01:00
Emil Ernerfeldt 18ebac116f Add widget `ImageButton` 2020-12-15 14:52:24 +01:00
Emil Ernerfeldt b508f931c2 Add ui.vertical_centered and ui.vertical_centered_justified 2020-12-15 14:51:23 +01:00
Emil Ernerfeldt 7710308e09 `ui.image` now takes `impl Into<Vec2>` as a `size` argument 2020-12-15 14:50:24 +01:00
Emil Ernerfeldt 5d513eb9ec Fix publishing (renamed font files) 2020-12-13 21:21:35 +01:00
Emil Ernerfeldt 403e2dfe5f Release Egui 0.5.0
## 0.5.0 - 2020-12-13

### Added 

* Emoji support: 1216 different emojis that work in any text.
  * The Demo app comes with a Font Book to explore the available glyphs.
* `ui.horizontal_wrapped(|ui| ...)`: Add widgets on a row but wrap at `max_size`.
* `ui.horizontal_wrapped_for_text`: Like `ui.horizontal_wrapped`, but with spacing made for embedding text.
* `ui.horizontal_for_text`: Like `ui.horizontal`, but with spacing made for embedding text.
* `egui::Layout` now supports justified layouts where contents is _also_ centered, right-aligned, etc.
* `ui.allocate_ui(size, |ui| ...)`: Easily create a child-`Ui` of a given size.
* `SelectableLabel` (`ui.selectable_label` and `ui.selectable_value`): A text-button that can be selected.
* `ui.small_button`: A smaller button that looks good embedded in text.
* `ui.drag_angle_tau`: For those who want to specify angles as fractions of τ (a full turn).
* Add `Resize::id_source` and `ScrollArea::id_source` to let the user avoid Id clashes.

### Changed 🔧

* New default font: [Ubuntu-Light](https://fonts.google.com/specimen/Ubuntu).
* Make it simpler to override fonts in `FontDefinitions`.
* Remove minimum button width.
* Refactor `egui::Layout` substantially, changing its interface.
* Calling `on_hover_text`/`on_hover_ui` multiple times will stack tooltips underneath the previous ones.
* Text wrapping on labels, buttons, checkboxes and radio buttons is now based on the layout.

### Removed 🔥

* Removed the `label!` macro.
2020-12-13 21:15:57 +01:00
Emil Ernerfeldt a7ae15871c Use std::borrow::Cow for the font data.
This saves some memory usage and copies in the common case.
It also fixes a weird 10x performance regression in the web demo.
2020-12-13 21:04:02 +01:00
Emil Ernerfeldt 357f62e136 Small improvements to the demo app 2020-12-13 20:37:44 +01:00
Emil Ernerfeldt f387b097cd Add ui.drag_angle_tau 2020-12-13 20:19:45 +01:00
Emil Ernerfeldt 41e4acfd4f Add helper `Layout::top_down_justified(align)` 2020-12-13 19:45:30 +01:00
Emil Ernerfeldt b7d1584f44 Simplify how fonts are defined in FontDefinitions 2020-12-13 19:29:02 +01:00
Emil Ernerfeldt 5880c95158 ui.horizontal_for_text: Size and spacing made for text 2020-12-13 18:14:18 +01:00
Emil Ernerfeldt b15bd76596 Pick default multiline on Labels based on layout and if text contains \n 2020-12-13 13:57:17 +01:00
Emil Ernerfeldt 273212a63c on_hover_text/ui many times will stack tooltips beneath the previous 2020-12-13 13:14:58 +01:00
Emil Ernerfeldt 5b0da17d91
Merge pull request #65 from emoon/support-space-key
Allow user to check for Key::Space
2020-12-13 12:29:05 +01:00
Daniel Collin 69dc13ed2d Allow user to check for Key::Space 2020-12-13 10:00:20 +01:00
Emil Ernerfeldt bd192a0374 Handle different item_spacings when doing hover detection 2020-12-13 00:40:19 +01:00
Emil Ernerfeldt 6ff39d88bf Demo App: Add ability to close the Backend window 2020-12-13 00:30:54 +01:00
Emil Ernerfeldt 72544b3690 Add a font book to the demo app 2020-12-12 19:53:04 +01:00
Emil Ernerfeldt 48a8553661 Sprinkle demo app with emojis 2020-12-12 19:43:12 +01:00
Emil Ernerfeldt 4db9b82435 [button] Implement paint culling for buttons 2020-12-12 19:34:18 +01:00
Emil Ernerfeldt 02b1e82a6e [button] Add ability to turn off button frame 2020-12-12 19:33:26 +01:00
Emil Ernerfeldt 84f06ed09a [button] Use singleline in horizontal layouts, else multiline 2020-12-12 19:32:58 +01:00
Emil Ernerfeldt b0d0d5dd55 [button] Remove minimum button width 2020-12-12 19:31:32 +01:00
Emil Ernerfeldt 8b9d58d753 Add variable width font as fallback to monospace 2020-12-12 19:30:01 +01:00
Emil Ernerfeldt 891c5d84d7 Add a second emoji font: emoji-icon-font 2020-12-12 15:03:12 +01:00
Emil Ernerfeldt cb310676af Add Emoji support with NotoEmoji-Regular 2020-12-12 00:53:54 +01:00
Emil Ernerfeldt a9df510a01 Move replacement glyph info into Font 2020-12-12 00:53:54 +01:00
Emil Ernerfeldt c82186e196 Fix Galley test 2020-12-12 00:53:54 +01:00
Emil Ernerfeldt 6a4a03ce9d Make struct Font a wrapper around FontImpl 2020-12-11 23:39:32 +01:00
Emil Ernerfeldt 2075cb4676 Add ui.colored_label(color, text) helper function 2020-12-11 12:25:28 +01:00
Emil Ernerfeldt 2bb99213c8 Use extremely explicit names like available_rect_before_wrap 2020-12-10 23:25:23 +01:00
Emil Ernerfeldt 81a9bdd5b0 Add ui.small_button: a smaller button that looks good embedded in text 2020-12-10 23:23:35 +01:00
Emil Ernerfeldt 383ef94b4a Label: correct y offset when sharing a row with another bigger widget 2020-12-10 23:23:35 +01:00
Emil Ernerfeldt d137ea0443 Label text will now intelligently continue and then wrap in wrap-layout 2020-12-10 23:23:35 +01:00
Emil Ernerfeldt a6ffe83349 Fix wrong cursor advancement for `allocate_ui` 2020-12-10 23:23:35 +01:00
Emil Ernerfeldt 8b097d014b Improve alginment of text with e.g. buttons 2020-12-10 23:23:35 +01:00
Emil Ernerfeldt 9b72a14883 Correctly align checkboxes and radiobuttons within justified layouts 2020-12-10 23:23:35 +01:00
Emil Ernerfeldt 807dafe91b Add ui.horizontal_wrapped and ui.horizontal_wrapped_for_text 2020-12-10 23:23:35 +01:00
Emil Ernerfeldt 98bb0f4110 Fix combo box width 2020-12-10 23:23:35 +01:00
Emil Ernerfeldt 5cd07db96a fix cursor advancement after wrapping 2020-12-10 23:23:35 +01:00
Emil Ernerfeldt ea9133a92d wrapping 2020-12-10 23:23:35 +01:00
Emil Ernerfeldt 7fb3c66d0b advance_after_rect 2020-12-10 23:23:35 +01:00
Emil Ernerfeldt a97141fe06 Correctly align buttons and labels in justified layouts 2020-12-10 23:23:35 +01:00
Emil Ernerfeldt c520f2e9cc Direction enum now one of LeftToRight, RightToLeft, TopDown, BottomUp 2020-12-10 23:23:35 +01:00
Emil Ernerfeldt ed6739867d Simplify Layout interface 2020-12-10 23:23:35 +01:00
Emil Ernerfeldt b0ba66b90d Refactor: move min_rect/max_rect/cursor into struct Region 2020-12-10 23:23:35 +01:00
Emil Ernerfeldt 6e8d5c87a0 Add Resize::id_source and ScrollArea::id_source 2020-12-10 10:28:30 +01:00
Emil Ernerfeldt 6de93cb0ec Remove the label! macro 2020-12-10 10:15:25 +01:00
Emil Ernerfeldt 5fcc64dc85 Always start off painting two frames to allow things to settle 2020-12-08 22:38:20 +01:00
Emil Ernerfeldt 428e2373e5 Change default font to Ubuntu-Light 2020-11-30 07:55:00 +01:00
Emil Ernerfeldt 4ecb7d14ca New widget: `SelectableLabel`: a text-button that can be selected
Also available via `ui.selectable_label` and `ui.selectable_value`
2020-11-30 07:17:03 +01:00
Emil Ernerfeldt a7e7826d2c Release 0.4.0 of egui, egui_web and egui_glium 2020-11-28 13:47:00 +01:00
Emil Ernerfeldt 861573c497 Text editing: improve double-click to select word 2020-11-28 12:50:18 +01:00
Emil Ernerfeldt ab61f98a13 Bug fix: make sure child Ui:s have own Id 2020-11-28 12:50:18 +01:00
Emil Ernerfeldt 8163f912d3 Bug fix: stop using AHasher for Id:s
AHasher does not produce same hashes efter e.g. restarting an app
2020-11-28 12:50:18 +01:00
Emil Ernerfeldt 8e6c8ce50e Update ahash to 0.6 2020-11-28 11:05:55 +01:00
Emil Ernerfeldt aec97c74b9 [egui] Enable a bunch of clippy warnings 2020-11-28 10:58:08 +01:00
Emil Ernerfeldt 8de74e4250 [egui_web] respect the native zoom/scale of the browser
Remove all complexity with own scale slider.

Closes https://github.com/emilk/egui/issues/53
2020-11-28 10:46:31 +01:00
Emil Ernerfeldt b1b34de4ee [style] Tweak clip_rect_margin to allow frames around ScrollArea:s 2020-11-27 15:46:16 +01:00
Emil Ernerfeldt 201586d512 REVERT: clip frame contents to frame border
can't do that quite as simply as I tried to :'(
2020-11-27 15:42:24 +01:00
Emil Ernerfeldt d8aeaa4b49 Clip frame contents to frame border 2020-11-27 15:33:14 +01:00
Patrik Höglund c7e199c8ac Fix the accessor for desired rows. 2020-11-26 13:52:06 +01:00
Emil Ernerfeldt aab1b351ab Fixed incorrect text wrapping width on radio buttons 2020-11-23 20:01:13 +01:00
Emil Ernerfeldt 56715a1dcd Improve ability to inspect why a widget is as wide as it is 2020-11-23 17:08:55 +01:00
Emil Ernerfeldt 633b19ee99 [egui_web] Repaint on finished fetch in example app 2020-11-20 20:35:16 +01:00
Emil Ernerfeldt 99a2a52510 Code cleanup 2020-11-20 20:32:38 +01:00
Emil Ernerfeldt 15b0214dff clippy fixes 2020-11-20 12:29:23 +01:00
Emil Ernerfeldt c6ce0b9e8c [example_web] show loading of an image
Required some redesign of `TextureAllocator` as well as
some improvements to the fetch API.
2020-11-18 22:16:01 +01:00
Emil Ernerfeldt 552104429d Remove accidentally commited test code 2020-11-18 19:02:29 +01:00
Emil Ernerfeldt fad0029119 egui_web: Add simple fetch API and demostrate it in example_web 2020-11-18 00:43:58 +01:00
Emil Ernerfeldt 7e9b5de250 Fix: id clash for TextEdit 2020-11-17 10:57:14 +01:00
Emil Ernerfeldt e7fd11f1aa Move focus between text fields with tab and shift-tab 2020-11-15 18:10:38 +01:00
Emil Ernerfeldt b17e6b3260 Implement undo for TextEdit 2020-11-15 17:36:15 +01:00
Emil Ernerfeldt 83444af862 Create `mod util` 2020-11-15 16:20:51 +01:00
Emil Ernerfeldt fe0d159324 Support Cmd+A ^W ^U ^K and shift-click 2020-11-15 14:21:21 +01:00
Emil Ernerfeldt b920822b6b fix: text selection when mouse goes out of the TextEdit area 2020-11-15 11:48:41 +01:00
Emil Ernerfeldt 13666755e1 Implement text selection 2020-11-15 04:44:55 +01:00
Emil Ernerfeldt 96befb0736 Galley: Return Rect when asking for cursor position 2020-11-14 23:07:16 +01:00
Emil Ernerfeldt 220f48a159 Remove unused cursor_blink_hz 2020-11-14 22:38:55 +01:00
Emil Ernerfeldt c4ed507d63 Add modifier keys and implement moving cursors one word at a time 2020-11-14 21:01:21 +01:00
Emil Ernerfeldt 7494026139 Fix some edge cases for the cursor movement 2020-11-14 18:21:06 +01:00
Emil Ernerfeldt c84431e473 Rename "row" to "line"
We now have "paragraphs" separated by \n,
which are word-wrapped onto one or more rows.
2020-11-14 18:21:06 +01:00
Emil Ernerfeldt 9ab00b8e50 Introduce meticulous cursors for text galleys 2020-11-14 18:21:06 +01:00
Emil Ernerfeldt e1077c98b7 Refactor, clarify and improve text layout 2020-11-14 18:21:06 +01:00
Emil Ernerfeldt 03eb9151c4 Improve automatic Id generation to make Id clashes less likely 2020-11-14 18:20:56 +01:00
Emil Ernerfeldt ee3f269d93 Fix numeric underflow when text editing 2020-11-13 12:51:52 +01:00
Emil Ernerfeldt 9057eaec7e Fix: you can again click slider values to edit them 2020-11-13 12:50:05 +01:00
Emil Ernerfeldt b3fa533ac5 Fix doctest 2020-11-13 11:31:01 +01:00
Emil Ernerfeldt 0340e2e6de TextEdit: You must explicitly choose singleline or multiline.
Multiline TextEdit now has a default height of 4 rows.
Added `ui.text_edit_singleline` and `ui.text_edit_multiline`.
2020-11-13 11:22:00 +01:00
Alexandre Rousseau 08bdbd3cb7
Rename menues to menus (#41)
Co-authored-by: Alexandre Rousseau <alexandre.rousseau@quebecormedia.com>
2020-11-10 22:56:35 +01:00
Emil Ernerfeldt d2b5730784 Check if TextEdit lost keyboard focus with response.lost_kb_focus 2020-11-09 18:42:54 +01:00
Emil Ernerfeldt c999ed038a Hexadecimal Debug format of Id 2020-11-09 18:41:19 +01:00
Emil Ernerfeldt e55b59256e Press enter in single line `TextEdit` to surrender keyboard focus 2020-11-09 18:40:23 +01:00
Emil Ernerfeldt 796def4bcb Fixed bug where a lost widget could still retain keyboard focus. 2020-11-09 13:19:22 +01:00
Emil Ernerfeldt 7cc5218630 [refactor] Move `used_ids` from `Context` to `Memory` 2020-11-09 13:04:05 +01:00
Emil Ernerfeldt b6dcae4651 Update versions to 0.3.0 2020-11-07 14:47:22 +01:00
Emil Ernerfeldt f46aa92eba Revert to aHash 0.4 again to allow Egui to be used inside of wasmtime 2020-11-07 14:35:42 +01:00
Emil Ernerfeldt 4b8a65268c Turn off anti-aliasing in debug builds by default 2020-11-07 14:06:14 +01:00
Emil Ernerfeldt af11d766fc Split out tesselation from Context::end_frame() 2020-11-07 11:44:32 +01:00
Emil Ernerfeldt 8393d1df47 Upgrade ahash from 0.4 to 0.5 2020-11-06 09:33:36 +01:00
Emil Ernerfeldt 94db5bb3a1 build fix 2020-11-03 22:14:21 +01:00
Emil Ernerfeldt 7abb9a2814 Improve Id generation, with more aggressive name clash warnings 2020-11-03 22:00:56 +01:00
Emil Ernerfeldt 8d365200ad Bug fix: accidental reuse of Id:s for columns
Fixes https://github.com/emilk/egui/issues/37
2020-11-02 22:50:47 +01:00
Emil Ernerfeldt d4d59d94b9 [demos] Add drag-and-drop demo (+ dancing strings demo) 2020-11-02 17:53:28 +01:00
Emil Ernerfeldt 4c25465e57 [window] Fix: no hover effect when already dragging something 2020-11-02 17:45:46 +01:00
Emil Ernerfeldt 9833ca57a6 [drag-and-drop] Add ability to translate layers and PaintCmd:s 2020-11-02 17:41:52 +01:00
Emil Ernerfeldt ed8a69ab2f [drag-and-drop] Add Grab and Grabbing CursorIcon:s 2020-11-02 17:40:05 +01:00
Emil Ernerfeldt c9c12f2d79 [drag-and-drop] Disable interactions with Tooltip layer 2020-11-02 17:39:01 +01:00
Emil Ernerfeldt 63c0379082 [refactor] Add helpful constructors to PaintCmd 2020-11-02 17:35:16 +01:00
Emil Ernerfeldt ca96172552 You can override the default Egui fonts
Closes https://github.com/emilk/egui/issues/32
2020-10-31 18:03:13 +01:00
Emil Ernerfeldt 82d55cb67e [demo] Add helper macros for linking to the source code on GitHub 2020-10-31 09:17:15 +01:00
Emil Ernerfeldt 496fdb52b4 [demo] add [DEBUG BUILD] warning text 2020-10-31 09:15:20 +01:00
Emil Ernerfeldt 8b2bcb29a0 Add `Small` `TextStyle` 2020-10-31 09:09:40 +01:00
Sam Samai a79aaa76a4
Downgrade ahash for wasm build (#35)
Seems like getrandom doesn't see wasm32-unknown-unknown as a valid target.
Dropping ahash, which has the getrandom dependency, to version 0.4.6 fixes this for now.
2020-10-29 11:48:39 +01:00
Hizoul fe585e48e9
Make `from_get_set` public (#34)
This allows the slider value to be obtained from anywhere that can be accessed from a closure and not just a `&'a mut` reference. An example would be a state that is shared via an Arc<Rw<T>> or Atomic value with a background thread
2020-10-28 16:56:33 +01:00
Emil Ernerfeldt 07a32793d6 Forbid creating a panel from within another panel 2020-10-27 15:37:30 +01:00
Emil Ernerfeldt a4ce2afcd8 Update dependencies 2020-10-27 14:40:48 +01:00
Emil Ernerfeldt cbdfc03378 Improve and expand documentation tests 2020-10-26 08:34:49 +01:00
Emil Ernerfeldt 060ce6b49f Improve docs 2020-10-24 19:46:38 +02:00
Emil Ernerfeldt 72285e7954 [slider] Add Slider::u32 2020-10-24 19:26:13 +02:00
Emil Ernerfeldt 7638ca9962 [app] Simplify interface to egui::app::App 2020-10-24 19:23:16 +02:00
Emil Ernerfeldt c364403d44 [app] Give apps the ability to resize integration 2020-10-24 18:45:31 +02:00
Emil Ernerfeldt ba7f3572a0 Give TextEdit a default width 2020-10-24 18:44:25 +02:00
Emil Ernerfeldt 4b549a773e Replace ctx.background_ui with CentralPanel 2020-10-24 18:37:20 +02:00
Emil Ernerfeldt 44a7cac046 `Context::begin_frame()` no longer returns anything.
Put your widgets into a `SidePanel`, `TopPanel`,
`Window` or into `ctx.background_ui()`.
2020-10-24 10:56:23 +02:00
Emil Ernerfeldt f86cb4a923 [demo] Improve introspection UI of areas 2020-10-24 10:31:57 +02:00
Emil Ernerfeldt 3416f3b91f [style] Wrap tooltip text earlier 2020-10-24 10:10:08 +02:00
Emil Ernerfeldt c96a929713 Improve GraphicLayers: always paint all layers 2020-10-24 10:06:11 +02:00
Emil Ernerfeldt 211d70b4f3 [window] Remove ability to throw windows 2020-10-23 15:16:04 +02:00
Emil Ernerfeldt fa831a2b55 Fix throwing areas around 2020-10-23 15:07:19 +02:00
Emil Ernerfeldt 46e39d3dd9 Add high-prio TODO to refactor layer system 2020-10-21 22:20:30 +02:00
Emil Ernerfeldt 35b949a2d8 Refactor panels into proper containers 2020-10-21 22:10:55 +02:00
Emil Ernerfeldt 8b51ae5dea Panels: Added Context::panel_left and panel_top
Context will keep track of the avilable space left after panels.
Windows will be constrained to that available space.
So add panels first, THEN add windows.
2020-10-21 18:26:28 +02:00
Emil Ernerfeldt 15c5e0b04d [menu] Fix minor size issue of menu bars 2020-10-21 17:46:57 +02:00
Emil Ernerfeldt 46ce9a4f3d [windows] Constrain windows to screen 2020-10-21 16:24:36 +02:00
Emil Ernerfeldt 39431afd03 [refactor] Rename Layer to LayerId for clarity 2020-10-21 14:39:31 +02:00
Emil Ernerfeldt 9b01c75e16 tesselator: produce fewer paint jobs with PaintCmd::Triangles 2020-10-21 11:09:42 +02:00
Emil Ernerfeldt 7fbb11481b Try to protect against invalid Triangles 2020-10-21 11:04:22 +02:00
Emil Ernerfeldt bc5dbd718e Fix: Context::wants_mouse_input() now returns false if a mouse drag started outside of Egui 2020-10-20 14:52:18 +02:00
Emil Ernerfeldt 6bbdf08482 [refactor] Split DemoWindows out of demos::DemoApp 2020-10-19 23:06:11 +02:00
Emil Ernerfeldt 8ccc36937f [egui_glium] Add option not to persist app to file 2020-10-19 20:25:05 +02:00
Emil Ernerfeldt 43813a71eb [app] Add egui::app::DummyStorage 2020-10-19 20:12:14 +02:00
Emil Ernerfeldt 12d387d7f5 Replace term "backend" with "integration" 2020-10-18 15:41:52 +02:00
Emil Ernerfeldt 92cfbe643c Add #![forbid(unsafe_code)] and safety badge 2020-10-18 15:40:23 +02:00
Emil Ernerfeldt b8642b4db4 Do less rounding of positions to pixel boundaries
Fixes https://github.com/emilk/egui/issues/27
2020-10-18 14:47:12 +02:00
Emil Ernerfeldt a4e19d7207 [app] Add demo app slider to change scale of all of Egui 2020-10-17 23:54:46 +02:00
Emil Ernerfeldt 251cde60f0 [app] Refactor egui::app::App interface to be more data oriented 2020-10-17 16:13:20 +02:00
Emil Ernerfeldt 4e0ea32d99 fix clippy issues 2020-10-17 11:02:51 +02:00
Emil Ernerfeldt 4fc34cca45 [demo] Show detailed memory usage statistics of paint lists 2020-10-17 10:57:25 +02:00
Emil Ernerfeldt 570860ec5f [refactor] Create helper struct Mutex (with double-lock detection) 2020-10-17 10:38:22 +02:00
Emil Ernerfeldt c2a0705c6f Add ability to override text color with `visuals.override_text_color`
This is kind of hacky; I may redesign this later
2020-10-14 16:32:29 +02:00
Emil Ernerfeldt 1bd45c35eb Collapsing header returns header and body responses 2020-10-14 15:26:31 +02:00
Emil Ernerfeldt 7561ccc189 ui.horizontal(...) etc returns Response
This is much more ergonomic than just returning a Rect (like previously).
The Response only contains `hover` checks.
2020-10-14 14:42:40 +02:00
Emil Ernerfeldt 7db71eb875 Use positional ids for sliders
This means two sliders now can use the same label
2020-10-14 12:39:46 +02:00
Emil Ernerfeldt a35fe7da12 Export egui::demos::app::DemoApp
Closes https://github.com/emilk/egui/issues/26
2020-10-12 12:35:55 +02:00
Emil Ernerfeldt 73dc3484ae [refactor] Separate space allocation from cursor advancement 2020-10-12 08:50:06 +02:00
Emil Ernerfeldt f0a45f5055 [refactor] Simplify Context with new `struct Options` 2020-10-12 08:49:01 +02:00
Emil Ernerfeldt ad4f87831b [refactor] Make `Ui` lighter by using a clone-on-write `Arc<Style>` 2020-10-12 03:22:41 +02:00
Emil Ernerfeldt 42b433a204 [release] bump version numbers to 0.2.0 2020-10-10 14:00:07 +02:00
Emil Ernerfeldt 12afc356ee Misc code cleanup: use more ui.checkbox, ui.label, ui.button etc 2020-10-10 13:04:40 +02:00
Emil Ernerfeldt 5c469551df Switch argument order of `ui.checkbox` and `ui.radio`
`bool, text` is the more logical order, as it

* matches the visuals: `[x] text`
* puts the important part first
* more natually allows us to extend to checkboxes without a text
2020-10-10 12:49:02 +02:00
Emil Ernerfeldt a2e8d1d32c [demo] Add compact version of the toggle_switch demo code 2020-10-10 12:33:48 +02:00
Emil Ernerfeldt 343648b94c [refactor] remove Ui::canvas (use Ui::allocate_space instead) 2020-10-10 12:25:01 +02:00
Emil Ernerfeldt b01690c7b8 [culling] coarse culling of text lines, circles and boxes 2020-10-10 12:25:01 +02:00
Emil Ernerfeldt 9874921d06 [bench] benchmark demo app when everything is open 2020-10-10 12:19:36 +02:00
Emil Ernerfeldt f30b354f77 [culling] Add debug option to ignore clip rectangles 2020-10-10 11:39:39 +02:00
Emil Ernerfeldt 2615d1bce1 Remove Rect::default() since there is no sensible default rectangle 2020-10-10 08:03:38 +02:00
Emil Ernerfeldt adec27a7dd fix: clip_rect of combo box popup 2020-10-10 07:54:59 +02:00
Emil Ernerfeldt 8c17b45439 [demo] shorter toggle_switch code 2020-10-10 07:54:54 +02:00
Emil Ernerfeldt c6fd30ea13 fix clippy issue 2020-10-08 22:24:55 +02:00
Emil Ernerfeldt 3f345b5963 Ui: clean up min_rect/max_rect related functions 2020-10-08 22:24:27 +02:00
Emil Ernerfeldt ba98ea715f fix ui.expand_... functions to also expand max_rect 2020-10-08 17:58:28 +02:00
Emil Ernerfeldt 8ff0bed259 [slider] Logarithmic sliders with support for zero and infinity
Logarithmic sliders will intelligently help you pick a good range
even if you inlcude zero or infinity. They also support crossing
the zero value, so you can have a slider span -INF to +INF.

The sliders now also supports reversed sliders (large -> small).
2020-10-07 09:59:49 +02:00
Emil Ernerfeldt d5d8eeb172 [slider] use f64 internally for increased precision 2020-10-06 21:03:47 +02:00
Emil Ernerfeldt a49cba54ac [math] make lerp, remap and remap_clamp work for both f32 and f64 2020-10-06 20:51:59 +02:00
Emil Ernerfeldt 7a71ac1a95 Rename tooltip_text to on_hover_text 2020-10-01 22:53:11 +02:00
Emil Ernerfeldt 5cba44eaa8 Clean up various small TODOs 2020-10-01 22:40:49 +02:00
Emil Ernerfeldt 6fcfb52aa0 [demo] add frame time graph to demo app 2020-10-01 22:25:44 +02:00
Emil Ernerfeldt 1156525ce9 [clippy] fixes 2020-10-01 16:56:40 +02:00
Emil Ernerfeldt a2a4eafd0e fix compilation of test and benchmark 2020-10-01 16:54:05 +02:00
Emil Ernerfeldt 908d1d0c08 [refactor] Ui: rename child_bounds to min_rect, desired_rect to max_rect 2020-09-27 11:43:44 +02:00
Emil Ernerfeldt 43bb670c0c [layout] correct handling of cursor position w.r.t. reversed layouts 2020-09-26 10:06:06 +02:00
Emil Ernerfeldt 8cbf90442b remove ui.vertical_centered 2020-09-26 07:52:24 +02:00
Emil Ernerfeldt aad0391fef remove Ui::set_layout 2020-09-26 07:52:24 +02:00
Emil Ernerfeldt d8021843f8 [menu] simplify menu interactions, fixing an annoying bug 2020-09-25 15:31:27 +02:00
Emil Ernerfeldt 22fffc1793 [widgets] combo box (drop down menu) 2020-09-25 15:30:16 +02:00
Emil Ernerfeldt b081be11d1 [spacing] simplify and tweak spacing 2020-09-25 11:41:47 +02:00
Emil Ernerfeldt 2164e37e39 [refactor] make sure we show all input members in introspection window 2020-09-23 09:03:18 +02:00
Emil Ernerfeldt b77151fb64 remove seconds_from_midnight from core egui input
It is only used by demo app, and so does not belong to egui proper.
Instead it is now passed as part of a DemoEnvironment
2020-09-23 08:57:23 +02:00
Emil Ernerfeldt deb1c33760 [style] visual tweaks 2020-09-20 09:24:09 +02:00
Emil Ernerfeldt 2c611292ff [style] more spacious, more alignmnet, more readable 2020-09-19 09:55:20 +02:00
Emil Ernerfeldt 05316b7045 [refactor] move DragValue to own file drag_value.rs 2020-09-18 23:59:35 +02:00
Emil Ernerfeldt dd8c298cb5 refactor space allocation code 2020-09-18 23:48:08 +02:00
Emil Ernerfeldt 283b4ab63d [layout] remove ui.horizontal_centered and make centering the default 2020-09-18 23:41:49 +02:00
Emil Ernerfeldt 4df8def9e2 [layout] change `clickable_diameter: f32` to `interact_size: Vec2` 2020-09-18 23:41:34 +02:00
Emil Ernerfeldt 85a67ab15e [refactor] introduce NumExt with at_least and at_most
`x.min(maxumim)` can be confusing but `x.at_most(maximum)` is very clear
2020-09-18 17:49:39 +02:00
Emil Ernerfeldt 5856cded95
refactor RunMode: move it from backend to the demo App (#23)
This simplifies the egui_glium and egui_web backends substantially,
reduces the scope of RunMode to a single file, and
removes duplicated code.

Basically: this is how I should have written it from the beginning.
2020-09-16 08:03:40 +02:00
Emil Ernerfeldt e30a9c1196 [window/resize] add Resize::max_width and fix bug with fixed_size 2020-09-13 22:07:55 +02:00
Emil Ernerfeldt f8bc4d38e8 [refactor] break up demo code into smaller files 2020-09-13 21:54:31 +02:00
Emil Ernerfeldt 8b4f96ffb2 [refactor] move math.rs to math/mod.rs, and same for all other egui mods 2020-09-13 21:23:35 +02:00
Emil Ernerfeldt adc6a225e3 [frame] bug fix: move cursor after a Frame 2020-09-13 19:02:25 +02:00
Emil Ernerfeldt 6904938594 Compilation fix 2020-09-13 15:41:16 +02:00
Emil Ernerfeldt 814121903a remove Label::auto_shrink and replace with ui.shrink_width_to_current() 2020-09-13 09:30:52 +02:00
Emil Ernerfeldt 1069ad8496 add color test window to troubleshoot your Egui painter backend
egui_glium passes the test, but the egui_web WebGL painter fails it.
2020-09-13 09:28:54 +02:00
Emil Ernerfeldt d49aec4079 Add user texture support to egui_glium and egui_web backends 2020-09-11 18:54:57 +02:00
Emil Ernerfeldt 02ef0cd9d5 [user textures] Add custom texture/image support
* Each Traingles mesh comes with a TextureId
* ui.image(...) to show an image/texture
* Up to backend what to do with user textures
2020-09-11 18:54:57 +02:00
Emil Ernerfeldt 5ba420988f [docs] improve toggle_switch.rs demo with better comments 2020-09-11 17:17:43 +02:00
Emil Ernerfeldt 10574c34d6 make it easy to combine Response:s with | and |= overloads 2020-09-11 10:19:04 +02:00
Emil Ernerfeldt 13060d495b [user texture] change uv to normalized texture coords in 0-1 range 2020-09-09 17:14:42 +02:00
Emil Ernerfeldt 0ea3a53d97 [font] texture atlas: add one pixel of padding for old GPUs 2020-09-09 15:24:44 +02:00
Emil Ernerfeldt 8984302122 [user textures] switch WHITE_UV to (0,0) and require clamped sampling 2020-09-09 15:24:09 +02:00
Emil Ernerfeldt bb367752cf [text] support non-latin characters by dynamically adding them to atlas 2020-09-09 14:33:30 +02:00
Emil Ernerfeldt 0e870dae3e [refactor] rename Texture::id to version 2020-09-09 13:32:40 +02:00
Emil Ernerfeldt d959f71d12 [text] add benchmark for text layout 2020-09-09 12:41:59 +02:00
Emil Ernerfeldt 672ffb6cd6 [test] add e2e egui test 2020-09-09 12:14:53 +02:00
Emil Ernerfeldt 23d99b07c8 [bug fix] assume pixels_per_point=1 if nothing is ever set 2020-09-09 12:14:21 +02:00