Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

style: Move cursor property out of mako #19798

Merged
merged 1 commit into from Jan 20, 2018

Conversation

@gootorov
Copy link
Contributor

gootorov commented Jan 17, 2018

Sub-PR of #19015

r? emilio


  • ./mach build -d does not report any errors
  • ./mach build-geckolib does not report any errors
  • ./mach test-tidy does not report any errors
  • These changes fix #19775 (github issue number if applicable).
  • These changes do not require tests

This change is Reviewable

@highfive
Copy link

highfive commented Jan 17, 2018

Heads up! This PR modifies the following files:

  • @bholley: components/style/properties/gecko.mako.rs, components/style/values/specified/pointing.rs, components/style/properties/longhand/pointing.mako.rs, components/style/values/specified/mod.rs, components/style/values/computed/mod.rs and 1 more
  • @canaltinova: components/style/properties/gecko.mako.rs, components/style/values/specified/pointing.rs, components/style/properties/longhand/pointing.mako.rs, components/style/values/specified/mod.rs, components/style/values/computed/mod.rs and 1 more
  • @emilio: components/style/properties/gecko.mako.rs, components/style/values/specified/pointing.rs, components/style/properties/longhand/pointing.mako.rs, components/style/values/specified/mod.rs, components/layout/display_list/builder.rs and 2 more
  • @fitzgen: components/script_traits/script_msg.rs, components/script_traits/lib.rs
  • @KiChjang: components/script_traits/script_msg.rs, components/script_traits/lib.rs
  • @asajeffrey: components/constellation/constellation.rs
  • @cbrewster: components/constellation/constellation.rs
  • @paulrouget: components/compositing/compositor.rs, ports/glutin/window.rs, components/constellation/constellation.rs, components/compositing/windowing.rs, components/compositing/compositor_thread.rs
@highfive
Copy link

highfive commented Jan 17, 2018

warning Warning warning

  • These commits modify style, layout, and gfx code, but no tests are modified. Please consider adding a test!
@gootorov
Copy link
Contributor Author

gootorov commented Jan 17, 2018

./mach build -d does not yet compile:

error[E0609]: no field `cursor` on type `&properties::style_structs::Pointing`                                                                                                                                                                                                                               
   --> components/style/servo/restyle_damage.rs:284:22                                                                                                                                                                                                                                                       
    |                                                                                                                                                                                                                                                                                                        
284 |         get_pointing.cursor, get_pointing.pointer_events,                                                                                                                                                                                                                                              
    |                      ^^^^^^                                                                                                                                                                                                                                                                            

error: aborting due to previous error

error: Could not compile `style`.

Not sure what causes it.

Copy link
Member

emilio left a comment

Looks reasonable! I need to take a closer look tomorrow, meanwhile the comments should allow you to get pass the build error.

Thanks for working on this!

"Cursor",
"computed::Cursor::auto()",
initial_specified_value="specified::Cursor::auto()",
products="gecko",

This comment has been minimized.

@emilio

emilio Jan 17, 2018

Member

You need to remove this products="gecko". With it you just removed the property from servo! :)

This comment has been minimized.

@gootorov

gootorov Jan 18, 2018

Author Contributor

Oh. This was causing the build error too.


/// cursor: [auto | default | ...]
#[cfg(not(feature = "gecko"))]
pub fn parse<'i, 't>(

This comment has been minimized.

@emilio

emilio Jan 17, 2018

Member

This should be a Parse trait implementation instead, ditto for the other below.

@@ -94,12 +93,13 @@ define_cursor! {
"all-scroll" => AllScroll = 32,
"zoom-in" => ZoomIn = 33,
"zoom-out" => ZoomOut = 34,
"auto" => Auto = 35,

This comment has been minimized.

@gootorov

gootorov Jan 18, 2018

Author Contributor

Are these values arbitrary or do they represent something else internally? Is it okay if we just move them by one like this?

This comment has been minimized.

@emilio

emilio Jan 18, 2018

Member

I don't see them used anywhere, so we could even remove them and simplify the macro, I'd think.

@@ -1196,6 +1196,7 @@ impl WindowMethods for Window {
use glutin::MouseCursor;

let glutin_cursor = match c {
CursorKind::Auto => MouseCursor::Default,

This comment has been minimized.

@gootorov

gootorov Jan 18, 2018

Author Contributor

Without this, we'll get a pattern not covered error.

I looked at the glutin crate and, if I understand correctly, it's used as the layer between Servo and the OS that lets changing the appearance of the mouse cursor, right? As there is no MouseCursor::Auto in that crate, I used the Default variant for the time being. Shall we implement it there or is it okay the way it is? Also, can the OS even have a Auto variant of the mouse cursor? To me it seems it always has to be some specific type.

This comment has been minimized.

@CYBAI

CYBAI Jan 18, 2018

Collaborator

About pattern not covered part, it's caused by removing the pattern of CursorKind::Auto.
When doing pattern matching, we need to cover all the patterns for the type so if you removed CursorKind::Auto in this pattern matching, compiler will complain about this pattern is not covered.
I don't understand the implementation part either so only reply to the pattern matching part!

@@ -3161,12 +3161,12 @@ impl ComputedValuesCursorUtility for ComputedValues {
#[inline]
fn get_cursor(&self, default_cursor: CursorKind) -> Option<CursorKind> {
match (
self.get_pointing().pointer_events,
self.get_pointing().cursor,
&self.get_pointing().pointer_events,

This comment has been minimized.

@gootorov

gootorov Jan 18, 2018

Author Contributor

I'm getting a cannot move out of borrowed content error here. We can solve it in two ways: by borrowing like here and then pattern matching the references or by copying like so:

self.get_pointing().pointer_events.clone()

and leaving the rest the way it is. I went with borrowing, but let me know if we should copy instead.

_context: &ParserContext,
input: &mut Parser<'i, 't>
) -> Result<Self, ParseError<'i>> {
#[allow(unused_imports)] use std::ascii::AsciiExt;

This comment has been minimized.

@gootorov

gootorov Jan 18, 2018

Author Contributor

Can we remove it? It's wasn't used anywhere. Was there something planned to be implemented, maybe?

This comment has been minimized.

@emilio

emilio Jan 18, 2018

Member

Yeah, we can.

This was needed for the eq_ignore_ascii_case on older rustc, and to keep style building with stable rust since it was needed for ports/geckolib.

This comment has been minimized.

@gootorov

gootorov Jan 18, 2018

Author Contributor

It appears it's still needed. ./mach build -d won't compile when it's removed.

Cursor::Alias => return cef_cursor_type_t::CT_ALIAS,
Cursor::Text => return cef_cursor_type_t::CT_IBEAM,
Cursor::Grab | Cursor::AllScroll =>
CursorKind::None => return cef_cursor_type_t::CT_NONE,

This comment has been minimized.

@gootorov

gootorov Jan 18, 2018

Author Contributor

Isn't it the same thing without the return's? I think we can remove them and simplify the function just a bit.

This comment has been minimized.

@CYBAI

CYBAI Jan 18, 2018

Collaborator

No, we don't need to use return if this pattern matching will just return the value!
IMO, it's more clear if we don't use return here!

This comment has been minimized.

@emilio

emilio Jan 18, 2018

Member

Yeah, no return needed :)

@@ -1190,47 +1190,48 @@ impl WindowMethods for Window {
}

/// Has no effect on Android.
fn set_cursor(&self, c: Cursor) {
fn set_cursor(&self, c: CursorKind) {

This comment has been minimized.

@gootorov

gootorov Jan 18, 2018

Author Contributor

We could rename the c arg to be more clear I think.

This comment has been minimized.

@emilio

emilio Jan 18, 2018

Member

Sure, that works.

(PointerEvents::Auto, cursor::Keyword::Cursor(cursor)) => Some(cursor),
(&PointerEvents::None, _) => None,
(&PointerEvents::Auto, &Cursor(CursorKind::Auto)) => Some(default_cursor),
(&PointerEvents::Auto, &Cursor(cursor)) => Some(cursor),

This comment has been minimized.

@CYBAI

CYBAI Jan 18, 2018

Collaborator

Sorry, I think I'm not familiar with borrow checker enough but I'm just curious why we have to use reference here?
If we don't use it, the value will be moved?

/// The computed value for the `cursor` property.
/// Servo variant.
/// https://drafts.csswg.org/css-ui/#cursor
#[cfg(not(feature = "gecko"))]

This comment has been minimized.

@CYBAI

CYBAI Jan 18, 2018

Collaborator

How about just using #[cfg(feature = "servo")]?
Maybe we don't need the Servo variant comment with this config attribute.

This comment has been minimized.

@gootorov

gootorov Jan 18, 2018

Author Contributor

It's a bit different.
When we build with ./mach build-geckolib we trigger the feature = "gecko" attribute and compile in all code marked with it. If we mark that part with #[cfg(feature = "servo")], then it will still be compiled in with ./mach build-geckolib, which we don't want. However, marking it with #[cfg(not(feature = "gecko"))] allows us to exclude it in when we compile with ./mach build-geckolib, which is what we want.

This comment has been minimized.

@CYBAI

CYBAI Jan 18, 2018

Collaborator

Oh, in my understanding, if we mark it as #[cfg(feature = "servo")], it will only be compiled when feature is servo so it will be ignored when feature is gecko.

If I'm wrong, please share with me and just ignore this comment :)

This comment has been minimized.

@gootorov

gootorov Jan 18, 2018

Author Contributor

Oh, wait, I think you're right actually. I thought for some reason that it will be compiled when feature is servo, which it won't. I need to get some sleep haha.

This comment has been minimized.

@CYBAI

CYBAI Jan 18, 2018

Collaborator

Sleep tight! and thanks for your confirmation :)

This comment has been minimized.

@gootorov

gootorov Jan 18, 2018

Author Contributor

No problem :). I just thought there could be a possibility that when we compile with ./mach build-geckolib both servo and gecko are enabled. Let's wait what Emilio says :).

This comment has been minimized.

@CYBAI

CYBAI Jan 18, 2018

Collaborator

Sure! I'm looking forward to seeing his comment too!

This comment has been minimized.

@emilio

emilio Jan 18, 2018

Member

Yeah, feature = "gecko" and feature = "servo" are mutually exclusive. So not(feature = "gecko") and feature = "servo" are effectively the same. Use whatever you please :)

@bors-servo
Copy link
Contributor

bors-servo commented Jan 18, 2018

The latest upstream changes (presumably #19782) made this pull request unmergeable. Please resolve the merge conflicts.

Copy link
Member

emilio left a comment

Looks good! Just answered your questions and pointed out a nit that makes the code a bit cleaner.

/// Servo variant.
/// https://drafts.csswg.org/css-ui/#cursor
#[cfg(not(feature = "gecko"))]
#[derive(Clone, Debug, MallocSizeOf, PartialEq, ToComputedValue, ToCss)]

This comment has been minimized.

@emilio

emilio Jan 18, 2018

Member

Just derive Copy here, then you can avoid all the borrow vs. clone issues :)

@@ -94,12 +93,13 @@ define_cursor! {
"all-scroll" => AllScroll = 32,
"zoom-in" => ZoomIn = 33,
"zoom-out" => ZoomOut = 34,
"auto" => Auto = 35,

This comment has been minimized.

@emilio

emilio Jan 18, 2018

Member

I don't see them used anywhere, so we could even remove them and simplify the macro, I'd think.

Cursor::Alias => return cef_cursor_type_t::CT_ALIAS,
Cursor::Text => return cef_cursor_type_t::CT_IBEAM,
Cursor::Grab | Cursor::AllScroll =>
CursorKind::None => return cef_cursor_type_t::CT_NONE,

This comment has been minimized.

@emilio

emilio Jan 18, 2018

Member

Yeah, no return needed :)

Cursor::AllScroll => MouseCursor::AllScroll,
Cursor::ZoomIn => MouseCursor::ZoomIn,
Cursor::ZoomOut => MouseCursor::ZoomOut,
CursorKind::Auto => MouseCursor::Default,

This comment has been minimized.

@emilio

emilio Jan 18, 2018

Member

Yeah, it's fine to leave Default here, for Auto I'd think.

@gootorov
Copy link
Contributor Author

gootorov commented Jan 18, 2018

Updated, rebased, and squashed.

@gootorov gootorov force-pushed the gootorov:move_cursor_from_mako branch 2 times, most recently from f8dab51 to e331e3c Jan 18, 2018
@emilio
emilio approved these changes Jan 19, 2018
Copy link
Member

emilio left a comment

Looks good! I just noticed a tiny inconsistency, but we can land this and address it in a followup, just let me know.

Thanks for working on this!

/// The specified value for the `cursor` property.
///
/// https://drafts.csswg.org/css-ui/#cursor
pub use values::computed::pointing::Cursor;

This comment has been minimized.

@emilio

emilio Jan 19, 2018

Member

Usually we do it the other way around (define it in specified, re-export it from computed).

It also feels a bit weird to have ToCss in a different place than Parse for the same type.

Sorry for not having caught this before, the patch looks great otherwise. If you don't want to address it is fine, can be a followup or something.

This comment has been minimized.

@gootorov

gootorov Jan 19, 2018

Author Contributor

No problem. No need to open another issue, I'll change it in this patch today! :)

#[derive(Clone, Debug, MallocSizeOf, PartialEq, ToComputedValue)]
pub struct Cursor {
/// The parsed images for the cursor.
pub images: Vec<CursorImage>,

This comment has been minimized.

@emilio

emilio Jan 19, 2018

Member

We should also file followups for:

  • Converting images to Box<[CursorImage]>.
  • Derive ToCss (I think it can be done now using #[css(comma)] on the images field.

Would you mind filing those issues? I can do that myself if not otherwise.

This comment has been minimized.

@emilio

emilio Jan 19, 2018

Member

After trying to do that, it apparently is not possible as of right now.

You'd need to tweak style_derive, and the code I had to add to handle #[css(iterable, comma)] on field was more than the serialization code itself, so there's no need to do the derive thing.

@gootorov
Copy link
Contributor Author

gootorov commented Jan 19, 2018

I just noticed a tiny inconsistency, but we can land this and address it in a followup, just let me know.

I'll make all necessary changes within this PR today, no need to open other issues.

@emilio
Copy link
Member

emilio commented Jan 19, 2018

I'll make all necessary changes within this PR today, no need to open other issues.

Awesome, thank you!

@gootorov gootorov force-pushed the gootorov:move_cursor_from_mako branch 2 times, most recently from c0f42b8 to e9edc70 Jan 19, 2018
@jdm
Copy link
Member

jdm commented Jan 19, 2018

./mach test-unit failed:

---- specified_values::size_of_specified_values stdout ----
	thread 'specified_values::size_of_specified_values' panicked at 'Your changes have decreased the size of cursor SpecifiedValue to 24. Good work! The threshold is currently 24. Please consider removing `boxed="True"` from this longhand.', ports/geckolib/tests/specified_values.rs:48:8
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
stack backtrace:
   0: std::sys::imp::backtrace::tracing::imp::unwind_backtrace
             at /checkout/src/libstd/sys/unix/backtrace/tracing/gcc_s.rs:49
   1: std::sys_common::backtrace::_print
             at /checkout/src/libstd/sys_common/backtrace.rs:69
   2: std::panicking::default_hook::{{closure}}
             at /checkout/src/libstd/sys_common/backtrace.rs:58
             at /checkout/src/libstd/panicking.rs:381
   3: std::panicking::default_hook
             at /checkout/src/libstd/panicking.rs:391
   4: std::panicking::rust_panic_with_hook
             at /checkout/src/libstd/panicking.rs:577
   5: std::panicking::begin_panic
             at /checkout/src/libstd/panicking.rs:538
   6: std::panicking::begin_panic_fmt
             at /checkout/src/libstd/panicking.rs:522
   7: stylo_tests::specified_values::size_of_specified_values
             at ports/geckolib/tests/specified_values.rs:48
   8: <F as test::FnBox<T>>::call_box
             at /checkout/src/libtest/lib.rs:1480
             at /checkout/src/libcore/ops/function.rs:223
             at /checkout/src/libtest/lib.rs:141
   9: __rust_maybe_catch_panic
             at /checkout/src/libpanic_unwind/lib.rs:99
failures:
    specified_values::size_of_specified_values
@emilio
emilio approved these changes Jan 19, 2018
Copy link
Member

emilio left a comment

LGTM with the test fixed, and the nit.

"Cursor",
"computed::Cursor::auto()",
initial_specified_value="specified::Cursor::auto()",
boxed=product == "gecko",

This comment has been minimized.

@emilio

emilio Jan 19, 2018

Member

This line should go away, since it now passes the test :)

_context: &ParserContext,
input: &mut Parser<'i, 't>
) -> Result<Self, ParseError<'i>> {
#[allow(unused_imports)] use std::ascii::AsciiExt;

This comment has been minimized.

@emilio

emilio Jan 19, 2018

Member

nit: You should be able to remove this line...

#[allow(unused_imports)] use std::ascii::AsciiExt;
let location = input.current_source_location();
let ident = input.expect_ident()?;
if ident.eq_ignore_ascii_case("auto") {

This comment has been minimized.

@emilio

emilio Jan 19, 2018

Member

if you remove this case completely, which should also be handled by from_css_keyword now.

) -> Result<Self, ParseError<'i>> {
Ok(Self {
url: SpecifiedUrl::parse(context, input)?,
hotspot: match input.try(|input| input.expect_number()) {

This comment has been minimized.

@emilio

emilio Jan 19, 2018

Member

This probably should use Number::parse, to handle calc(), but let's do this in a followup, since it also needs tests and all that.

But could you leave a comment like:

// FIXME(emilio): Should use Number::parse to handle calc() correctly.

right above hotspot:?

This comment has been minimized.

@gootorov

gootorov Jan 19, 2018

Author Contributor

Sure, done! :)

@gootorov
Copy link
Contributor Author

gootorov commented Jan 19, 2018

Passes the test now.

@gootorov gootorov force-pushed the gootorov:move_cursor_from_mako branch 2 times, most recently from 13ce507 to 98a1655 Jan 19, 2018
@gootorov
Copy link
Contributor Author

gootorov commented Jan 20, 2018

@CYBAI Thanks.
Should be fixed now. Wonder why it even compiled for me locally...

@emilio
Copy link
Member

emilio commented Jan 20, 2018

ports/embedding is only built by ./mach build-cef, so I could understand ./mach build passing but not that.

Anyway, still LGTM. Thanks a lot @CYBAI for the catch!

@bors-servo r+

@bors-servo
Copy link
Contributor

bors-servo commented Jan 20, 2018

📌 Commit 4d90f0e has been approved by emilio

@bors-servo
Copy link
Contributor

bors-servo commented Jan 20, 2018

Testing commit 4d90f0e with merge 0e9b974...

bors-servo added a commit that referenced this pull request Jan 20, 2018
style: Move cursor property out of mako

<!-- Please describe your changes on the following line: -->
Sub-PR of #19015

r? emilio

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach build-geckolib` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #19775 (github issue number if applicable).

<!-- Either: -->
- [x] These changes do not require tests

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/19798)
<!-- Reviewable:end -->
@CYBAI
Copy link
Collaborator

CYBAI commented Jan 20, 2018

@gootorov @emilio Thanks homu catching that 😄 and thanks the explanation from emilio about ./mach build-cef. I didn't know that either.

@bors-servo
Copy link
Contributor

bors-servo commented Jan 20, 2018

💔 Test failed - mac-dev-unit

@CYBAI
Copy link
Collaborator

CYBAI commented Jan 20, 2018

From ran build-cef failed stdio: http://build.servo.org/builders/mac-dev-unit/builds/10827/steps/compile__2/logs/stdio

2018-01-20 02:03:36.456 rustc[27188:428515753] Metadata.framework [Error]: couldn't get the client port
error[E0433]: failed to resolve. Use of undeclared type or module `Cursor`
   --> ports/cef/window.rs:148:36
    |
148 |                 CursorKind::Grab | Cursor::AllScroll =>
    |                                    ^^^^^^ Use of undeclared type or module `Cursor`

error[E0433]: failed to resolve. Use of undeclared type or module `Cursor`
   --> ports/cef/window.rs:150:38
    |
150 |                 CursorKind::NoDrop | Cursor::NotAllowed =>
    |                                      ^^^^^^ Use of undeclared type or module `Cursor`

error[E0433]: failed to resolve. Use of undeclared type or module `Cursor`
   --> ports/cef/window.rs:155:40
    |
155 |                 CursorKind::EwResize | Cursor::ColResize =>
    |                                        ^^^^^^ Use of undeclared type or module `Cursor`

error[E0433]: failed to resolve. Use of undeclared type or module `Cursor`
   --> ports/cef/window.rs:159:40
    |
159 |                 CursorKind::NsResize | Cursor::RowResize =>
    |                                        ^^^^^^ Use of undeclared type or module `Cursor`

error[E0412]: cannot find type `Cursor` in this scope
   --> ports/cef/window.rs:136:48
    |
136 |     fn cursor_handle_for_cursor(&self, cursor: Cursor) -> cef_cursor_handle_t {
    |                                                ^^^^^^ not found in this scope
help: possible candidates are found in other modules, you can import them into scope
    |
12  | use servo::style::values::computed::Cursor;
    |
12  | use servo::style::values::computed::pointing::Cursor;
    |
12  | use servo::style::values::specified::Cursor;
    |
12  | use servo::style::values::specified::pointing::Cursor;
    |
and 1 other candidates

error: aborting due to 5 previous errors

error: Could not compile `embedding`.

To learn more, run the command again with --verbose.
@gootorov
Copy link
Contributor Author

gootorov commented Jan 20, 2018

@CYBAI Thanks again!

ports/embedding is only built by ./mach build-cef, so I could understand ./mach build passing but not that.

@emilio Wasn't aware of that, good to know! I'm still able to compile it with ./mach build-cef though, that's bizarre.

Anyway, I fixed the errors, so hopefully it'll pass the tests now. In the meanwhile, I'll try to figure out why it builds for me with the incorrect code.

@gootorov gootorov force-pushed the gootorov:move_cursor_from_mako branch from 4d90f0e to 4ee9eb8 Jan 20, 2018
@emilio
emilio approved these changes Jan 20, 2018
Copy link
Member

emilio left a comment

Ok, let's try again! :)

CursorKind::NsResize => cef_cursor_type_t::CT_NORTHSOUTHRESIZE,
CursorKind::RowResize => cef_cursor_type_t::CT_ROWRESIZE,
CursorKind::VerticalText => cef_cursor_type_t::CT_VERTICALTEXT,
_ => cef_cursor_type_t::CT_POINTER,
}
}

/// Returns the Cocoa cursor for a CSS cursor. These match Firefox, except where Firefox
/// bundles custom resources (which we don't yet do).
#[cfg(target_os="macos")]

This comment has been minimized.

@emilio

emilio Jan 20, 2018

Member

Yeah, this function is macos only, so if you're on Linux like I am you don't even build it.

@emilio
Copy link
Member

emilio commented Jan 20, 2018

@bors-servo
Copy link
Contributor

bors-servo commented Jan 20, 2018

📌 Commit 4ee9eb8 has been approved by emilio

@bors-servo
Copy link
Contributor

bors-servo commented Jan 20, 2018

Testing commit 4ee9eb8 with merge 59033e6...

bors-servo added a commit that referenced this pull request Jan 20, 2018
style: Move cursor property out of mako

<!-- Please describe your changes on the following line: -->
Sub-PR of #19015

r? emilio

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach build-geckolib` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #19775 (github issue number if applicable).

<!-- Either: -->
- [x] These changes do not require tests

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/19798)
<!-- Reviewable:end -->
@bors-servo
Copy link
Contributor

bors-servo commented Jan 20, 2018

@bors-servo bors-servo merged commit 4ee9eb8 into servo:master Jan 20, 2018
3 checks passed
3 checks passed
continuous-integration/appveyor/pr AppVeyor build succeeded
Details
continuous-integration/travis-ci/pr The Travis CI build passed
Details
homu Test successful
Details
@gootorov gootorov deleted the gootorov:move_cursor_from_mako branch Jan 21, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked issues

Successfully merging this pull request may close these issues.

7 participants
You can’t perform that action at this time.