Palette: speed up
This commit is contained in:
parent
f79d5a63db
commit
dee7537462
@ -62,7 +62,7 @@ class Palette(gtk.Window):
|
|||||||
if not self._is_tooltip:
|
if not self._is_tooltip:
|
||||||
self._separator = gtk.HSeparator()
|
self._separator = gtk.HSeparator()
|
||||||
self._separator.hide()
|
self._separator.hide()
|
||||||
|
|
||||||
self._menu_bar = gtk.MenuBar()
|
self._menu_bar = gtk.MenuBar()
|
||||||
self._menu_bar.set_pack_direction(gtk.PACK_DIRECTION_TTB)
|
self._menu_bar.set_pack_direction(gtk.PACK_DIRECTION_TTB)
|
||||||
self._menu_bar.show()
|
self._menu_bar.show()
|
||||||
@ -89,6 +89,10 @@ class Palette(gtk.Window):
|
|||||||
self.connect('key-press-event', self._on_key_press_event_cb)
|
self.connect('key-press-event', self._on_key_press_event_cb)
|
||||||
|
|
||||||
self.set_border_width(self._WIN_BORDER)
|
self.set_border_width(self._WIN_BORDER)
|
||||||
|
|
||||||
|
self._width, self._height = self.size_request()
|
||||||
|
self._scr_width = gtk.gdk.screen_width()
|
||||||
|
self._scr_height = gtk.gdk.screen_height()
|
||||||
|
|
||||||
def do_set_property(self, pspec, value):
|
def do_set_property(self, pspec, value):
|
||||||
if pspec.name == 'parent':
|
if pspec.name == 'parent':
|
||||||
@ -127,19 +131,13 @@ class Palette(gtk.Window):
|
|||||||
self.move(move_x, move_y)
|
self.move(move_x, move_y)
|
||||||
|
|
||||||
def _try_position(self, alignment):
|
def _try_position(self, alignment):
|
||||||
scr_width = gtk.gdk.screen_width()
|
|
||||||
scr_height = gtk.gdk.screen_height()
|
|
||||||
|
|
||||||
plt_width, plt_height = self.size_request()
|
|
||||||
|
|
||||||
move_x, move_y = self._calc_position(alignment)
|
move_x, move_y = self._calc_position(alignment)
|
||||||
self.move(move_x, move_y)
|
self.move(move_x, move_y)
|
||||||
plt_x, plt_y = self.window.get_origin()
|
plt_x, plt_y = self.window.get_origin()
|
||||||
|
|
||||||
if (plt_x<0 or plt_x+plt_width>scr_width) or (plt_y<0 or plt_y+plt_height>scr_height):
|
if (plt_x<0 or plt_x+self._width>self._scr_width) or (plt_y<0 or plt_y+self._height>self._scr_height):
|
||||||
return False
|
return False
|
||||||
else:
|
else:
|
||||||
self.move(move_x, move_y)
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def _calc_position(self, alignment):
|
def _calc_position(self, alignment):
|
||||||
@ -147,22 +145,20 @@ class Palette(gtk.Window):
|
|||||||
parent_rectangle = self._parent_widget.get_allocation()
|
parent_rectangle = self._parent_widget.get_allocation()
|
||||||
palette_rectangle = self.get_allocation()
|
palette_rectangle = self.get_allocation()
|
||||||
|
|
||||||
palette_width, palette_height = self.size_request()
|
|
||||||
|
|
||||||
if alignment == ALIGNMENT_BOTTOM_LEFT:
|
if alignment == ALIGNMENT_BOTTOM_LEFT:
|
||||||
move_x = win_x + parent_rectangle.x
|
move_x = win_x + parent_rectangle.x
|
||||||
move_y = win_y + parent_rectangle.y + parent_rectangle.height
|
move_y = win_y + parent_rectangle.y + parent_rectangle.height
|
||||||
|
|
||||||
elif alignment == ALIGNMENT_BOTTOM_RIGHT:
|
elif alignment == ALIGNMENT_BOTTOM_RIGHT:
|
||||||
move_x = (win_x + parent_rectangle.x + parent_rectangle.width) - palette_width
|
move_x = (win_x + parent_rectangle.x + parent_rectangle.width) - self._width
|
||||||
move_y = win_y + parent_rectangle.y + parent_rectangle.height
|
move_y = win_y + parent_rectangle.y + parent_rectangle.height
|
||||||
|
|
||||||
elif alignment == ALIGNMENT_LEFT_BOTTOM:
|
elif alignment == ALIGNMENT_LEFT_BOTTOM:
|
||||||
move_x = (win_x + parent_rectangle.x) - palette_width
|
move_x = (win_x + parent_rectangle.x) - self._width
|
||||||
move_y = win_y + parent_rectangle.y
|
move_y = win_y + parent_rectangle.y
|
||||||
|
|
||||||
elif alignment == ALIGNMENT_LEFT_TOP:
|
elif alignment == ALIGNMENT_LEFT_TOP:
|
||||||
move_x = (win_x + parent_rectangle.x) - palette_width
|
move_x = (win_x + parent_rectangle.x) - self._width
|
||||||
move_y = (win_y + parent_rectangle.y + parent_rectangle.height) - palette_rectangle.height
|
move_y = (win_y + parent_rectangle.y + parent_rectangle.height) - palette_rectangle.height
|
||||||
|
|
||||||
elif alignment == ALIGNMENT_RIGHT_BOTTOM:
|
elif alignment == ALIGNMENT_RIGHT_BOTTOM:
|
||||||
@ -178,7 +174,7 @@ class Palette(gtk.Window):
|
|||||||
move_y = (win_y + parent_rectangle.y) - (palette_rectangle.height)
|
move_y = (win_y + parent_rectangle.y) - (palette_rectangle.height)
|
||||||
|
|
||||||
elif alignment == ALIGNMENT_TOP_RIGHT:
|
elif alignment == ALIGNMENT_TOP_RIGHT:
|
||||||
move_x = (win_x + parent_rectangle.x + parent_rectangle.width) - palette_width
|
move_x = (win_x + parent_rectangle.x + parent_rectangle.width) - self._width
|
||||||
move_y = (win_y + parent_rectangle.y) - (palette_rectangle.height)
|
move_y = (win_y + parent_rectangle.y) - (palette_rectangle.height)
|
||||||
|
|
||||||
return move_x, move_y
|
return move_x, move_y
|
||||||
@ -212,8 +208,8 @@ class Palette(gtk.Window):
|
|||||||
# We need to know if the mouse pointer continue inside
|
# We need to know if the mouse pointer continue inside
|
||||||
# the parent widget (opener)
|
# the parent widget (opener)
|
||||||
pointer_x, pointer_y = self._parent_widget.get_pointer()
|
pointer_x, pointer_y = self._parent_widget.get_pointer()
|
||||||
parent_alloc = self._parent_widget.get_allocation()
|
self._parent_alloc = self._parent_widget.get_allocation()
|
||||||
pointer_rect = gdk.Rectangle(pointer_x + parent_alloc.x, pointer_y + parent_alloc.y, 1, 1)
|
pointer_rect = gdk.Rectangle(pointer_x + self._parent_alloc.x, pointer_y + self._parent_alloc.y, 1, 1)
|
||||||
|
|
||||||
if (self._parent_widget.allocation.intersect(pointer_rect).width == 0):
|
if (self._parent_widget.allocation.intersect(pointer_rect).width == 0):
|
||||||
return
|
return
|
||||||
@ -271,5 +267,3 @@ class Palette(gtk.Window):
|
|||||||
((keyval == keysyms.Up or keyval == keysyms.KP_Up) and
|
((keyval == keysyms.Up or keyval == keysyms.KP_Up) and
|
||||||
state == gdk.MOD1_MASK)):
|
state == gdk.MOD1_MASK)):
|
||||||
self._close_palette_cb()
|
self._close_palette_cb()
|
||||||
elif keyval == keysyms.Tab:
|
|
||||||
self._close_palette_cb()
|
|
||||||
|
@ -22,7 +22,7 @@ from sugar.graphics.icon import Icon
|
|||||||
from sugar.graphics.palette import *
|
from sugar.graphics.palette import *
|
||||||
|
|
||||||
class ToolButton(gtk.ToolButton):
|
class ToolButton(gtk.ToolButton):
|
||||||
_POPUP_PALETTE_DELAY = 0.5
|
_POPUP_PALETTE_DELAY = 0.15
|
||||||
|
|
||||||
def __init__(self, icon_name=None):
|
def __init__(self, icon_name=None):
|
||||||
gtk.ToolButton.__init__(self)
|
gtk.ToolButton.__init__(self)
|
||||||
|
Loading…
Reference in New Issue
Block a user