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
4c7d248b
Commit
4c7d248b
authored
Apr 18, 2019
by
Florian Blasius
🤘
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[#157] add event mapping ot web window.
parent
e6f79581
Pipeline
#3852
passed with stages
in 6 minutes and 21 seconds
Changes
2
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
54 additions
and
2 deletions
+54
-2
crates/web-window/src/events.rs
crates/web-window/src/events.rs
+21
-0
crates/web-window/src/lib.rs
crates/web-window/src/lib.rs
+33
-2
No files found.
crates/web-window/src/events.rs
0 → 100644
View file @
4c7d248b
use
stdweb
::
web
::
event
::
*
;
/// Defines web mouse events.
pub
enum
Mouse
{
Up
(
MouseUpEvent
),
Down
(
MouseDownEvent
),
Move
(
MouseMoveEvent
)
}
/// Defines web key events.
pub
enum
Key
{
Up
(
KeyUpEvent
),
Down
(
KeyDownEvent
)
}
/// Defines a web window event.
pub
enum
Event
{
Mouse
(
Mouse
),
Key
(
Key
)
}
crates/web-window/src/lib.rs
View file @
4c7d248b
use
std
::{
rc
::
Rc
,
cell
::
RefCell
,
};
use
stdweb
::{
self
,
_
js_impl
,
js
,
...
...
@@ -11,6 +15,7 @@ use stdweb::{
};
use
orbtk_structs
::{
Position
,
Size
};
pub
use
events
::
*
;
/// Used to initializes the web engine.
///
...
...
@@ -57,12 +62,35 @@ impl WebWindowBuilder {
canvas
.set_width
(
self
.size
.0
as
u32
);
canvas
.set_height
(
self
.size
.1
as
u32
);
let
events
=
Rc
::
new
(
RefCell
::
new
(
vec!
[]));
let
events_c
=
events
.clone
();
window
()
.add_event_listener
(
move
|
e
:
event
::
MouseDownEvent
|
{
events_c
.borrow_mut
()
.push
(
Event
::
Mouse
(
Mouse
::
Down
(
e
)));
});
let
events_c
=
events
.clone
();
window
()
.add_event_listener
(
move
|
e
:
event
::
MouseUpEvent
|
{
events_c
.borrow_mut
()
.push
(
Event
::
Mouse
(
Mouse
::
Up
(
e
)));
});
let
events_c
=
events
.clone
();
window
()
.add_event_listener
(
move
|
e
:
event
::
KeyUpEvent
|
{
events_c
.borrow_mut
()
.push
(
Event
::
Key
(
Key
::
Up
(
e
)));
});
let
events_c
=
events
.clone
();
window
()
.add_event_listener
(
move
|
e
:
event
::
KeyDownEvent
|
{
events_c
.borrow_mut
()
.push
(
Event
::
Key
(
Key
::
Down
(
e
)));
});
stdweb
::
event_loop
();
WebWindow
{
title
:
self
.title
,
size
:
self
.size
,
canvas
,
events
,
}
}
}
...
...
@@ -73,6 +101,7 @@ pub struct WebWindow {
title
:
String
,
canvas
:
CanvasElement
,
size
:
(
f64
,
f64
),
events
:
Rc
<
RefCell
<
Vec
<
Event
>>>
,
}
impl
WebWindow
{
...
...
@@ -89,11 +118,11 @@ impl WebWindow {
impl
Size
for
WebWindow
{
fn
width
(
&
self
)
->
f64
{
self
.canvas
.width
()
as
f64
self
.canvas
.width
()
as
f64
}
fn
set_width
(
&
mut
self
,
width
:
f64
)
{
self
.canvas
.set_width
(
width
as
u32
);
self
.canvas
.set_width
(
width
as
u32
);
}
fn
height
(
&
self
)
->
f64
{
...
...
@@ -114,4 +143,6 @@ impl Size for WebWindow {
}
}
mod
events
;
pub
mod
prelude
;
\ No newline at end of file
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