diff options
author | Alexander Larsson <alexl@redhat.com> | 2013-11-06 13:28:52 +0100 |
---|---|---|
committer | Alexander Larsson <alexl@redhat.com> | 2013-11-07 14:09:53 +0100 |
commit | bbfe7e0e697fdc9e5921eeaba013843218594f94 (patch) | |
tree | 30a143510558e266bd620307589e6bcd8939e997 /gdk/broadway | |
parent | c6a3c0e4eb5839be665c26684256e3ff7885e1a2 (diff) | |
download | gtk+-bbfe7e0e697fdc9e5921eeaba013843218594f94.tar.gz |
broadway: Always use client side decorations
Diffstat (limited to 'gdk/broadway')
-rw-r--r-- | gdk/broadway/broadway.js | 176 | ||||
-rw-r--r-- | gdk/broadway/client.html | 61 |
2 files changed, 3 insertions, 234 deletions
diff --git a/gdk/broadway/broadway.js b/gdk/broadway/broadway.js index 97ef30963c..ddef0f6fa6 100644 --- a/gdk/broadway/broadway.js +++ b/gdk/broadway/broadway.js @@ -90,7 +90,6 @@ var grab = new Object(); grab.window = null; grab.ownerEvents = false; grab.implicit = false; -var localGrab = null; var keyDownList = []; var lastSerial = 0; var lastX = 0; @@ -166,47 +165,6 @@ function sendConfigureNotify(surface) sendInput("w", [surface.id, surface.x, surface.y, surface.width, surface.height]); } -function getStyle(el, styleProp) -{ - if (el.currentStyle) { - return el.currentStyle[styleProp]; - } else if (window.getComputedStyle) { - var win = el.ownerDocument.defaultView; - return win.getComputedStyle(el, null).getPropertyValue(styleProp); - } - return undefined; -} - -function parseOffset(value) -{ - var px = value.indexOf("px"); - if (px > 0) - return parseInt(value.slice(0,px)); - return 0; -} - -function getFrameOffset(surface) { - var x = 0; - var y = 0; - var el = surface.canvas; - while (el != null && el != surface.frame) { - x += el.offsetLeft; - y += el.offsetTop; - - /* For some reason the border is not includes in the offsets.. */ - x += parseOffset(getStyle(el, "border-left-width")); - y += parseOffset(getStyle(el, "border-top-width")); - - el = el.offsetParent; - } - - /* Also include frame border as per above */ - x += parseOffset(getStyle(el, "border-left-width")); - y += parseOffset(getStyle(el, "border-top-width")); - - return {x: x, y: y}; -} - var positionIndex = 0; function cmdCreateSurface(id, x, y, width, height, isTemp) { @@ -215,7 +173,6 @@ function cmdCreateSurface(id, x, y, width, height, isTemp) surface.drawQueue = []; surface.transientParent = 0; surface.visible = false; - surface.frame = null; var canvas = document.createElement("canvas"); canvas.width = width; @@ -224,32 +181,8 @@ function cmdCreateSurface(id, x, y, width, height, isTemp) surface.canvas = canvas; var toplevelElement; - if (isTemp) { - toplevelElement = canvas; - document.body.appendChild(canvas); - } else { - var frame = document.createElement("div"); - frame.frameFor = surface; - frame.className = "frame-window"; - surface.frame = frame; - - var button = document.createElement("center"); - button.closeFor = surface; - var X = document.createTextNode("\u00d7"); - button.appendChild(X); - button.className = "frame-close"; - frame.appendChild(button); - - var contents = document.createElement("div"); - contents.className = "frame-contents"; - frame.appendChild(contents); - - canvas.style["display"] = "block"; - contents.appendChild(canvas); - - toplevelElement = frame; - document.body.appendChild(frame); - } + toplevelElement = canvas; + document.body.appendChild(canvas); surface.toplevelElement = toplevelElement; toplevelElement.style["position"] = "absolute"; @@ -259,9 +192,7 @@ function cmdCreateSurface(id, x, y, width, height, isTemp) toplevelElement.style["top"] = surface.y + "px"; toplevelElement.style["display"] = "inline"; - /* We hide the frame with visibility rather than display none - * so getFrameOffset still works with hidden windows. */ - toplevelElement.style["visibility"] = "hidden"; + toplevelElement.style["visibility"] = "none"; surfaces[id] = surface; stackingOrder.push(surface); @@ -280,12 +211,6 @@ function cmdShowSurface(id) var xOffset = surface.x; var yOffset = surface.y; - if (surface.frame) { - var offset = getFrameOffset(surface); - xOffset -= offset.x; - yOffset -= offset.y; - } - surface.toplevelElement.style["left"] = xOffset + "px"; surface.toplevelElement.style["top"] = yOffset + "px"; surface.toplevelElement.style["visibility"] = "visible"; @@ -365,9 +290,6 @@ function cmdDeleteSurface(id) stackingOrder.splice(i, 1); var canvas = surface.canvas; canvas.parentNode.removeChild(canvas); - var frame = surface.frame; - if (frame) - frame.parentNode.removeChild(frame); delete surfaces[id]; } @@ -396,12 +318,6 @@ function cmdMoveResizeSurface(id, has_pos, x, y, has_size, w, h) var yOffset = surface.y; var element = surface.canvas; - if (surface.frame) { - element = surface.frame; - var offset = getFrameOffset(surface); - xOffset -= offset.x; - yOffset -= offset.y; - } element.style["left"] = xOffset + "px"; element.style["top"] = yOffset + "px"; @@ -703,24 +619,6 @@ function updateForEvent(ev) { function onMouseMove (ev) { updateForEvent(ev); - if (localGrab) { - if (localGrab.type == "move") { - var dx = ev.pageX - localGrab.lastX; - var dy = ev.pageY - localGrab.lastY; - var surface = localGrab.surface; - surface.x += dx; - surface.y += dy; - var offset = getFrameOffset(surface); - if (surface.y < offset.y) - surface.y = offset.y; - localGrab.frame.style["left"] = (surface.x - offset.x) + "px"; - localGrab.frame.style["top"] = (surface.y - offset.y) + "px"; - sendConfigureNotify(surface); - localGrab.lastX = ev.pageX; - localGrab.lastY = ev.pageY; - } - return; - } var id = getSurfaceId(ev); id = getEffectiveEventTarget (id); var pos = getPositionsFromEvent(ev, id); @@ -730,14 +628,6 @@ function onMouseMove (ev) { function onMouseOver (ev) { updateForEvent(ev); - if (!grab.window && ev.target.closeFor) { - ev.target.className = ev.target.className + " frame-hover"; - if (ev.target.isDown) - ev.target.className = ev.target.className + " frame-active"; - } - - if (localGrab) - return; var id = getSurfaceId(ev); realWindowWithMouse = id; id = getEffectiveEventTarget (id); @@ -750,13 +640,6 @@ function onMouseOver (ev) { function onMouseOut (ev) { updateForEvent(ev); - if (ev.target.closeFor) { - ev.target.className = ev.target.className.replace(" frame-hover", ""); - if (ev.target.isDown) - ev.target.className = ev.target.className.replace(" frame-active", ""); - } - if (localGrab) - return; var id = getSurfaceId(ev); var origId = id; id = getEffectiveEventTarget (id); @@ -810,29 +693,6 @@ function onMouseDown (ev) { var id = getSurfaceId(ev); id = getEffectiveEventTarget (id); - if (id == 0 && ev.target.frameFor) { /* mouse click on frame */ - localGrab = new Object(); - localGrab.surface = ev.target.frameFor; - localGrab.type = "move"; - localGrab.frame = ev.target; - localGrab.lastX = ev.pageX; - localGrab.lastY = ev.pageY; - moveToTop(localGrab.frame.frameFor); - return false; - } - - if (id == 0 && ev.target.closeFor) { /* mouse click on frame */ - ev.target.isDown = true; - ev.target.className = ev.target.className + " frame-active"; - localGrab = new Object(); - localGrab.surface = ev.target.closeFor; - localGrab.type = "close"; - localGrab.button = ev.target; - localGrab.lastX = ev.pageX; - localGrab.lastY = ev.pageY; - return false; - } - var pos = getPositionsFromEvent(ev, id); if (grab.window == null) doGrab (id, false, true); @@ -848,28 +708,6 @@ function onMouseUp (ev) { id = getEffectiveEventTarget (evId); var pos = getPositionsFromEvent(ev, id); - if (localGrab) { - realWindowWithMouse = evId; - if (windowWithMouse != id) { - if (windowWithMouse != 0) { - sendInput ("l", [realWindowWithMouse, windowWithMouse, pos.rootX, pos.rootY, pos.winX, pos.winY, lastState, GDK_CROSSING_NORMAL]); - } - windowWithMouse = id; - if (windowWithMouse != 0) { - sendInput ("e", [realWindowWithMouse, id, pos.rootX, pos.rootY, pos.winX, pos.winY, lastState, GDK_CROSSING_NORMAL]); - } - } - - if (localGrab.type == "close") { - localGrab.button.isDown = false; - localGrab.button.className = localGrab.button.className.replace( " frame-active", ""); - if (ev.target == localGrab.button) - sendInput ("W", [localGrab.surface.id]); - } - localGrab = null; - return false; - } - sendInput ("B", [realWindowWithMouse, id, pos.rootX, pos.rootY, pos.winX, pos.winY, lastState, button]); if (grab.window != null && grab.implicit) @@ -2421,22 +2259,16 @@ function handleKeyUp(e) { function onKeyDown (ev) { updateForEvent(ev); - if (localGrab) - return cancelEvent(ev); return handleKeyDown(ev); } function onKeyPress(ev) { updateForEvent(ev); - if (localGrab) - return cancelEvent(ev); return handleKeyPress(ev); } function onKeyUp (ev) { updateForEvent(ev); - if (localGrab) - return cancelEvent(ev); return handleKeyUp(ev); } @@ -2456,8 +2288,6 @@ function cancelEvent(ev) function onMouseWheel(ev) { updateForEvent(ev); - if (localGrab) - return false; ev = ev ? ev : window.event; var id = getSurfaceId(ev); diff --git a/gdk/broadway/client.html b/gdk/broadway/client.html index 85e66cd70b..a6996123d7 100644 --- a/gdk/broadway/client.html +++ b/gdk/broadway/client.html @@ -4,67 +4,6 @@ <meta http-equiv="Content-Type" content="text/html; charset=utf8" /> <title>broadway 2.0</title> <script type="text/javascript" src="broadway.js"></script> -<style type="text/css"> - -.frame-window { - background-color: rgb(248, 248, 248); - background-image: -moz-linear-gradient(rgb(255, 255, 255) 1px, rgb(247, 247, 247) 1px, rgb(237, 236, 235) 32px); -/* background-image: -webkit-gradient(linear, left top, left 50, from(rgba(250, 253, 255, 0.9)), to(rgba(250, 253, 255, 0)), color-stop(88%, rgba(250, 253, 255, 0.75))); */ - border-radius: 5px 5px 0 0; - -moz-border-radius: 5px 5px 0 0; - border: 1px solid rgb(142, 142, 142); - padding: 0 0 3px; -} - -.frame-contents { - clear: both; - position: relative; -} - -.frame-close { - margin: 0 0 4px; - background-color: #BFC1C1; - background-image: -moz-linear-gradient(#D1D2D2 0%, #BABBBC 65%, #D4D4D5 100%); -/* background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.35)), to(rgba(255, 255, 255, 0.5)), color-stop(50%, rgba(255, 255, 255, 0.5)), color-stop(50%, rgba(255, 255, 255, 0))); */ - border-radius: 0 4px 0 5px; -/* border-top-left-radius: 0; - border-top-right-radius: 4px; - -moz-border-radius: 2px; - -moz-border-top-left-radius: 0; - -moz-border-top-right-radius: 0; */ - border-top: none; - border-right: none; - border-bottom: 1px solid #BEBEBE; - border-left: 1px solid #8E8E8E; - float: right; - color: white; - line-height: 30px; - width: 30px; - text-shadow: 0 1px 0 #8E8E8E; - font-weight: bold; - font-family: sans-serif; - font-size: 190%; - cursor: pointer; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -o-user-select: none; - user-select: none; -} - -.frame-close.frame-hover { - background-image: -moz-linear-gradient(#E8E8E8 0%, #C7C8C9 65%, #D6D6D6 100%); -} - -.frame-close.frame-active { - background-image: -moz-linear-gradient(#8E8E8E 1px, #BEBEBE 100%); - text-shadow: none; - /* this is a gross hack, remove if it break things */ - margin: -1px 0 4px; - padding-top: 1px; -} - -</style> </head> <body onload="connect()"> |