;(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

Senador gay rebate ministro da Educação: "Minha família não é desajustada"

Ana Paula Bimbati

Do UOL, em São Paulo

16/09/2021 13h33

O senador Fabiano Contarato (REDE-ES) criticou uma fala homofóbica do ministro da Educação, Milton Ribeiro, durante sessão da Comissão de Educação, no Senado, hoje. Ribeiro já havia dito, no ano ado, que gays vêm de "famílias desajustadas".

"Tenho orgulho em dizer que sou casado, tenho dois filhos. Tenho orgulho do meu pai que é motorista de ônibus e da minha mãe, semianalfabeta. Não venho de família desajustada, senhor ministro, não tenho subfamília", afirmou Contarato, hoje pela manhã. Ele é o primeiro senador assumidamente gay no Brasil.

A fala de Ribeiro foi registrada em entrevista ao jornal O Estado de S. Paulo. "Acho que o adolescente que muitas vezes opta por andar no caminho do homossexualismo (sic) tem um contexto familiar muito próximo, basta fazer uma pesquisa. São famílias desajustadas, algumas. Falta atenção do pai, falta atenção da mãe", disse, à época.

Quase um ano depois das declarações, a Justiça Federal de São Paulo condenou a União a pagar uma indenização de R$ 200 mil por danos morais coletivos por causa das falas LGBTIfóbicas.

O senador questionou se a família do ministro seria melhor.

Orientação sexual não define caráter, o que define caráter é seu comportamento ético, moral, seu grau de comprometimento com a redução de desigualdade social, com a geração de emprego."
Fabiano Contarato, senador (REDE-ES)

O ministro, pelas regras do Senado, deveria responder sobre essa e outras declarações, mas interrompeu o ciclo para se justificar e convidar o senador para uma visita ao MEC (Ministério da Educação).

"Na Polícia Federal, eu disse que não foi minha intenção. Estava chegando no MEC, vim de um contexto que se misturava e agora que percebo minha postura como pastor, que cremos sim, temos dogmas, que são bíblicos, mas como ministro de um Estado laico tenho que responder a todos e a orientação de todos. Gostaria que o senhor soubesse que essa é a minha postura", argumentou Ribeiro.

O senador ressaltou ainda que "um professor trans não vai fazer com o que filho A, B ou C, faça parte da comunidade LGBTQIA+".

Na mesma entrevista, no ano ado, o ministro disse que a orientação sexual pode ser opcional. "Vejo menino de 12, 13 anos optando por ser gay, nunca esteve com uma mulher de fato, com um homem de fato e caminhar por aí", afirmou, segundo o jornal.

Ribeiro presta explicações pela manhã à Comissão de Educação, no Senado, após dizer que a universidade "deveria ser para poucos" e que alunos com deficiência "atrapalham" o aprendizado dos demais.