def test_select_menu_item_with_submenu(): ''' Selecting a submenu on a menu item without a parent should work as expected and has no effect. :bug: #541315 ''' menu = gtk.Menu() mi = gtk.MenuItem('hi') mi.set_submenu(menu) current_grab = gtk.grab_get_current() mi.select() mi.select() assert gtk.grab_get_current() == current_grab
def test_popup(): ''' Ensure that ``popup`` shows and grabs the menu widget. ''' menu = gtk.Menu() menu.popup(None, None, None, gdk.BUTTON_PRESS, 0, 0) assert gtk.grab_get_current() == menu assert menu.flags() & gtk.VISIBLE
def test_grab_insensitive_widget(): ''' Ensure that an insensitive widget cannot be grabbed. :bug: #540834 ''' # Clean up previous grab. current_grabber = gtk.grab_get_current() if current_grabber: current_grabber.grab_remove() assert not gtk.grab_get_current() widget = gtk.Button() widget.unset_flags(gtk.SENSITIVE) widget.grab_add() assert not widget.flags() & gtk.HAS_GRAB assert not gtk.grab_get_current() widget.grab_remove()
def test_grab_add(): ''' Ensure that when a widget is made the current grabbing widget, then ``gtk.grab_get_current`` returns that widget. ''' widget = gtk.Button() widget.grab_add() assert gtk.grab_get_current() == widget
def show(exctype, value, tb): if exctype is not KeyboardInterrupt: widget = gtk.grab_get_current() if widget is not None: widget.grab_remove() dw = DebugWindow() dw.show_exception(exctype, value, tb) dw.run() dw.destroy()
def _showException(self): widget = gtk.grab_get_current() if widget is not None: widget.grab_remove() self._printTraceback() msg = traceback.format_exception_only(self._exctype, self._value)[0] result = msg.split(' ', 1) if len(result) == 1: msg = result[0] arguments = '' else: msg, arguments = result self._insertText(msg, 'exc') self._insertText(' ' + arguments) # scroll to end vadj = self.get_vadjustment() vadj.set_value(vadj.upper)
def _update(self, do_immediate): toplevel = self.get_toplevel() if not toplevel or not _is_toplevel(toplevel): # The autoDrawer cannot function properly without a toplevel. return self.opened = False # Is the drawer pinned open? if self.pinned: do_immediate = True self.opened = True # Is the mouse cursor inside the event box? */ x, y = self.eventBox.get_pointer() alloc = self.eventBox.get_allocation() if x > -1 and y > -1 and x < alloc.width and y < alloc.height: self.opened = True # If there is a focused widget, is it inside the event box? */ focus = toplevel.get_focus() if focus and focus.is_ancestor(self.eventBox): do_immediate = True self.opened = True # If input is grabbed, is it on behalf of a widget inside the # event box? if not self.inputUngrabbed: grabbed = None if toplevel.get_group(): # XXX: Not in pygtk? #grabbed = toplevel.get_group().get_current_grab() pass if not grabbed: grabbed = gtk.grab_get_current() if grabbed and isinstance(grabbed, gtk.Menu): while True: menuAttach = grabbed.get_attach_widget() if not menuAttach: break grabbed = menuAttach if not isinstance(grabbed, gtk.MenuItem): break menuItemParent = grabbed.get_parent() if not isinstance(menuItemParent, gtk.Menu): break grabbed = menuItemParent if grabbed and grabbed.is_ancestor(self.eventBox): do_immediate = True self.opened = True if self.delayConnection: gobject.source_remove(self.delayConnection) if self.forceClosing: self._enforce(True) elif do_immediate: self._enforce(False) else: self.delayConnection = gobject.timeout_add(self.delayValue, self._on_enforce_delay)
def test_grab_get_current(): ''' Ensure that ``gtk.grab_get_current`` returns ``None`` when no widget has the grab. ''' assert not gtk.grab_get_current()