;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL
Topo

Gal Costa e Caetano Veloso eram parentes ou namorados? Entenda a relação

Caetano Veloso resgatou foto antiga de Gal para parabenizá-la em um aniversário - Reprodução/Instagram
Caetano Veloso resgatou foto antiga de Gal para parabenizá-la em um aniversário Imagem: Reprodução/Instagram

Maurício Thomaz

Colaboração para Splash

09/11/2022 12h42

A cantora Gal Costa morreu nesta quarta-feira (9) aos 77 anos e, com seu falecimento, várias dúvidas sobre sua vida e carreira ressurgiram entre fãs e iradores da artista. Uma delas é se Gal e Caetano Veloso eram parentes.

Apesar de terem gravado muitas músicas juntos e terem se apresentado um ao lado do outro em diversos palcos do Brasil e do mundo, Gal e Caetano não eram parentes. Ao menos, não de sangue.

Gal conheceu Caetano em 1963, aos 18 anos de idade, apresentada a ele por Dedé Gadelha, sua vizinha e amiga —e futura esposa do cantor.

Mesmo sem laços sanguíneos, a cantora já declarou em um show, em 2006, que Caetano era como um mano (irmão) para ela e o filho mais velho dele, Moreno Veloso, é seu afilhado.

A amizade profunda com Caetano não impediu que ele tivesse um "tesãozinho reprimido por ela; que rendeu, claro, uma música linda", como lembrou entrevista com a cantora em 2018.

"Da Maior Importância", escrita em 1975, diz: "De repente, ser uma coisa tão grande, da maior importância, deve haver uma transa qualquer pra você e pra mim". O desejo ficou só na canção, porque Gal era a melhor amiga de Dedé.

Caetano é irmão de Bethânia

Por incrível que pareça, muitos ainda não sabem que Caetano Veloso é, na verdade, irmão de Maria Bethânia.

Um meme surgiu nas redes sociais meses atrás, lançando o questionamento: "Com que idade vocês descobriram que Maria Bethânia e Caetano Veloso são irmãos?".

Ambos são filhos de Claudionor Viana Teles Veloso, mais conhecida como Dona Canô, morta em 2012, aos 105 anos de idade. Dona Canô participava sempre da tradicional Festa de Reis em Santo Amaro, na Bahia, que reúne milhares de pessoas em toda região. A celebração de seus aniversários também se tornou um marco, atraindo muitas pessoas para a festa.