Skip to content

completer: popup positioning is wrong for transformed editor #5688

Open
@Totodore

Description

Describe the bug

I have an editor that is css-transformed (scaling and translation). The editor is working well thanks to the hasCssTransforms config property. However the completer popup is completely mis-positionned:
image

Expected Behavior

I would expect the popup to be positioned according to the transformed editor no matter its scaling/translation.

Current Behavior

The popup is positioning according to absolute screen coordinates.

Reproduction Steps

index.html

<!doctype html>
<html lang="en">
    <head>
        <title>ACE in Action</title>
        <style type="text/css" media="screen">
            #editor {
                width: 1400px;
                height: 1400px;
                position: absolute;
                transform: scale(0.4) translate(200px, 200px);
                left: 0, top: 0;
            }
            .wrapper {
                background-color: red;
                width: 50000px;
                height: 50000px;
                position: relative;
            }
        </style>
    </head>
    <body>
        <div class="wrapper">
            <div id="editor">
                function foo(items) { var x = "All this is syntax highlighted";
                return x; }
            </div>
        </div>

        <script
            src="frontend/node_modules/ace-builds/src/ace.js"
            type="text/javascript"
            charset="utf-8"
        ></script>
        <script
            src="frontend/node_modules/ace-builds/src/ext-language_tools.js"
            type="text/javascript"
            charset="utf-8"
        ></script>
        <script>
            var editor = ace.edit("editor", {
                mode: "ace/mode/javascript",
                theme: "ace/theme/merbivore",
                fontSize: 20,
                hasCssTransforms: true,
                enableBasicAutocompletion: true,
                enableLiveAutocompletion: true,
            });
            editor.setTheme("ace/theme/monokai");
            editor.session.setMode("ace/mode/javascript");
        </script>
    </body>
</html>

image

Possible Solution

No response

Additional Information/Context

No response

Ace Version / Browser / OS / Keyboard layout

1.36.5 / Chrome 131.0

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions