Skip to content

Commit

Permalink
Merge pull request #385 from mattrose/revert-74
Browse files Browse the repository at this point in the history
Revert 74
  • Loading branch information
mattrose committed Feb 18, 2021
2 parents 907e95d + 01bb33e commit ee8c51d
Showing 1 changed file with 52 additions and 42 deletions.
94 changes: 52 additions & 42 deletions terminatorlib/terminal.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
import os
import signal
import gi
import cairo
from gi.repository import GLib, GObject, Pango, Gtk, Gdk, GdkPixbuf
gi.require_version('Vte', '2.91') # vte-0.38 (gnome-3.14)
from gi.repository import Vte
Expand All @@ -32,32 +31,6 @@
from terminatorlib.layoutlauncher import LayoutLauncher
from . import regex

class Overpaint(Vte.Terminal):
def __init__(self):
Vte.Terminal.__init__(self)
self.config = Config()
### inactive_color_offset is the opposite of alpha level
self.dim_p = float(self.config['inactive_color_offset'])
self.dim_l = round(1.0 - self.dim_p,3)
def dim(self,b):
self.overpaint = b

def do_draw(self,cr):
### get_color_background_for_draw is not available in older
### versions of vte
try:
bgc = Vte.Terminal.get_color_background_for_draw(self)
except AttributeError as e:
bgc = Gdk.RGBA()
bgc.parse(self.config['background_color'])
Vte.Terminal.do_draw(self,cr)
if self.overpaint:
bgc.alpha = self.dim_l
cr.set_operator(cairo.Operator.OVER)
Gdk.cairo_set_source_rgba(cr,bgc)
cr.rectangle(0.0,0.0,self.get_allocated_width(),self.get_allocated_height())
cr.paint()

# pylint: disable-msg=R0904
class Terminal(Gtk.VBox):
"""Class implementing the VTE widget and its wrappings"""
Expand Down Expand Up @@ -132,8 +105,10 @@ class Terminal(Gtk.VBox):
is_held_open = False

fgcolor_active = None
fgcolor_inactive = None
bgcolor = None
palette_active = None
palette_inactive = None

composite_support = None

Expand Down Expand Up @@ -163,9 +138,7 @@ def __init__(self):

self.pending_on_vte_size_allocate = False

self.vte = Overpaint()
self.vte.dim(False)
self.queue_draw()
self.vte = Vte.Terminal()
self.background_image = None
if self.config['background_image'] != '':
try:
Expand Down Expand Up @@ -743,23 +716,58 @@ def reconfigure(self, _widget=None):
else:
self.bgcolor.alpha = 1

factor = self.config['inactive_color_offset']
if factor > 1.0:
factor = 1.0
self.fgcolor_inactive = self.fgcolor_active.copy()
dbg(("fgcolor_inactive set to: RGB(%s,%s,%s)", getattr(self.fgcolor_inactive, "red"),
getattr(self.fgcolor_inactive, "green"),
getattr(self.fgcolor_inactive, "blue")))

for bit in ['red', 'green', 'blue']:
setattr(self.fgcolor_inactive, bit,
getattr(self.fgcolor_inactive, bit) * factor)

dbg(("fgcolor_inactive set to: RGB(%s,%s,%s)", getattr(self.fgcolor_inactive, "red"),
getattr(self.fgcolor_inactive, "green"),
getattr(self.fgcolor_inactive, "blue")))
colors = self.config['palette'].split(':')
self.palette_active = []

for color in colors:
if color:
newcolor = Gdk.RGBA()
newcolor.parse(color)
self.palette_active.append(newcolor)
self.vte.set_colors(self.fgcolor_active, self.bgcolor,
self.palette_active)

if len(colors) == 16:
# RGB values for indices 16..255 copied from vte source in order to dim them
shades = [0, 95, 135, 175, 215, 255]
for r in range(0, 6):
for g in range(0, 6):
for b in range(0, 6):
newcolor = Gdk.RGBA()
setattr(newcolor, "red", shades[r] / 255.0)
setattr(newcolor, "green", shades[g] / 255.0)
setattr(newcolor, "blue", shades[b] / 255.0)
self.palette_active.append(newcolor)
for y in range(8, 248, 10):
newcolor = Gdk.RGBA()
setattr(newcolor, "red", y / 255.0)
setattr(newcolor, "green", y / 255.0)
setattr(newcolor, "blue", y / 255.0)
self.palette_active.append(newcolor)
self.palette_inactive = []
for color in self.palette_active:
newcolor = Gdk.RGBA()
for bit in ['red', 'green', 'blue']:
setattr(newcolor, bit,
getattr(color, bit) * factor)
self.palette_inactive.append(newcolor)
if self.terminator.last_focused_term == self:
self.vte.dim(False)
self.queue_draw()
self.vte.set_colors(self.fgcolor_active, self.bgcolor,
self.palette_active)
else:
self.vte.dim(True)
self.queue_draw()
self.vte.set_colors(self.fgcolor_inactive, self.bgcolor,
self.palette_inactive)
profiles = self.config.base.profiles
terminal_box_style_context = self.terminalbox.get_style_context()
for profile in list(profiles.keys()):
Expand Down Expand Up @@ -1265,8 +1273,9 @@ def on_vte_focus(self, _widget):

def on_vte_focus_in(self, _widget, _event):
"""Inform other parts of the application when focus is received"""
self.vte.dim(False)
self.queue_draw()
self.vte.set_colors(self.fgcolor_active, self.bgcolor,
self.palette_active)
self.set_cursor_color()
if not self.terminator.doing_layout:
self.terminator.last_focused_term = self
if self.get_toplevel().is_child_notebook():
Expand All @@ -1280,8 +1289,9 @@ def on_vte_focus_in(self, _widget, _event):

def on_vte_focus_out(self, _widget, _event):
"""Inform other parts of the application when focus is lost"""
self.vte.dim(True)
self.queue_draw()
self.vte.set_colors(self.fgcolor_inactive, self.bgcolor,
self.palette_inactive)
self.set_cursor_color()
self.emit('focus-out')

def on_window_focus_out(self):
Expand Down

0 comments on commit ee8c51d

Please sign in to comment.