Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
orbtk
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Packages & Registries
Packages & Registries
Container Registry
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Florian Blasius
orbtk
Commits
7863accc
Commit
7863accc
authored
May 10, 2019
by
Florian Blasius
🤘
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[#165] fix double update by one event.
parent
4022ecd9
Pipeline
#4123
passed with stages
in 9 minutes and 52 seconds
Changes
3
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
51 additions
and
34 deletions
+51
-34
src/event/event_queue.rs
src/event/event_queue.rs
+4
-0
src/systems/event_system.rs
src/systems/event_system.rs
+45
-34
src/systems/render_system.rs
src/systems/render_system.rs
+2
-0
No files found.
src/event/event_queue.rs
View file @
7863accc
...
...
@@ -83,6 +83,10 @@ impl EventQueue {
None
}
pub
fn
len
(
&
self
)
->
usize
{
self
.event_queue
.len
()
}
}
impl
<
'a
>
IntoIterator
for
&
'a
mut
EventQueue
{
...
...
src/systems/event_system.rs
View file @
7863accc
...
...
@@ -14,7 +14,7 @@ use crate::{
check_mouse_condition
,
ClickEvent
,
EventBox
,
EventHandler
,
EventStrategy
,
MouseDownEvent
,
MouseUpEvent
,
SystemEvent
,
WindowEvent
,
},
properties
::{
Bounds
,
Constraint
,
Enabled
,
Focused
,
Pressed
,
Selected
,
ConstraintExt
},
properties
::{
Bounds
,
Constraint
,
ConstraintExt
,
Enabled
,
Focused
,
Pressed
,
Selected
},
structs
::
Size
,
widgets
::
WidgetContainer
,
Global
,
...
...
@@ -35,7 +35,8 @@ impl EventSystem {
_
tree
:
&
Tree
,
_
ecm
:
&
mut
EntityComponentManager
,
_
new_events
:
&
mut
Vec
<
EventBox
>
,
)
{}
)
{
}
fn
process_bottom_up_event
(
&
self
,
...
...
@@ -200,49 +201,59 @@ impl System<Tree> for EventSystem {
let
mut
new_events
=
vec!
[];
for
event
in
event_context
.event_queue
.borrow_mut
()
.into_iter
()
{
if
let
Ok
(
event
)
=
event
.downcast_ref
::
<
WindowEvent
>
()
{
match
event
{
WindowEvent
::
Resize
{
width
,
height
}
=>
{
// update window size
if
let
Ok
(
bounds
)
=
ecm
.borrow_mut_component
::
<
Bounds
>
(
0
)
{
bounds
.set_width
(
*
width
);
bounds
.set_height
(
*
height
);
loop
{
for
event
in
event_context
.event_queue
.borrow_mut
()
.into_iter
()
{
if
let
Ok
(
event
)
=
event
.downcast_ref
::
<
WindowEvent
>
()
{
match
event
{
WindowEvent
::
Resize
{
width
,
height
}
=>
{
// update window size
if
let
Ok
(
bounds
)
=
ecm
.borrow_mut_component
::
<
Bounds
>
(
0
)
{
bounds
.set_width
(
*
width
);
bounds
.set_height
(
*
height
);
}
if
let
Ok
(
constraint
)
=
ecm
.borrow_mut_component
::
<
Constraint
>
(
0
)
{
constraint
.set_width
(
*
width
);
constraint
.set_height
(
*
height
);
}
self
.update
.set
(
true
);
}
}
}
if
let
Ok
(
constraint
)
=
ecm
.borrow_mut_component
::
<
Constraint
>
(
0
)
{
constraint
.set_width
(
*
width
);
constraint
.set_height
(
*
height
);
}
self
.update
.set
(
true
);
if
let
Ok
(
event
)
=
event
.downcast_ref
::
<
SystemEvent
>
()
{
match
event
{
SystemEvent
::
Quit
=>
{
self
.running
.set
(
false
);
return
;
}
}
}
}
if
let
Ok
(
event
)
=
event
.downcast_ref
::
<
SystemEvent
>
()
{
match
event
{
SystemEvent
::
Quit
=>
{
self
.running
.set
(
false
);
return
;
match
event
.strategy
{
EventStrategy
::
TopDown
=>
{
self
.process_top_down_event
(
&
event
,
tree
,
ecm
,
&
mut
new_events
);
}
EventStrategy
::
BottomUp
=>
{
self
.process_bottom_up_event
(
&
event
,
tree
,
ecm
,
&
mut
new_events
);
}
_
=>
{}
}
}
match
event
.strategy
{
EventStrategy
::
TopDown
=>
{
self
.process_top_down_event
(
&
event
,
tree
,
ecm
,
&
mut
new_events
);
}
EventStrategy
::
BottomUp
=>
{
self
.process_bottom_up_event
(
&
event
,
tree
,
ecm
,
&
mut
new_events
);
}
_
=>
{}
event_context
.event_queue
.borrow_mut
()
.append
(
&
mut
new_events
);
if
event_context
.event_queue
.borrow
()
.len
()
==
0
{
break
;
}
}
event_context
.event_queue
.borrow_mut
()
.append
(
&
mut
new_events
);
}
}
src/systems/render_system.rs
View file @
7863accc
...
...
@@ -110,5 +110,7 @@ impl System<Tree> for RenderSystem {
g_pos
.y
=
global_pos
.1
;
}
}
self
.update
.set
(
false
);
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment