Shifted area of button sensibilty



The following code reproduces the problem.
All design is stripped-off for brevity.

This are normally two files, DHead my
replacement of message boxes. DHead.vOutest
is there for adding other widgets thereby
creating more dialogs with all have
a click into the top area as "Cancel".

The problem disappears, when the
set_opacity line is commented out.

This is on WindowsXP, the stable
runtime bundle from gnome.org
with gtk.2.16.6 and pygtk 2.12.

I have the same problem under
depikt (my own python gate to gtk) -
there are more problems in an __init__
for subclasses of gtk.Window().

Thus we have a basic problem with
python here or a problem with gtk,
what is much more probable. Of course
this is a very deeply hidden bug -
that is why i asked only for a
page in some text anywhere.


# -*- coding: utf-8 -*-
import sys
import pygtk
pygtk.require('2.0')
import gtk
from gtk.gdk import color_parse as colop
from os.path import dirname

def loeschen(widget, event): return False
def destruct(widget = None): gtk.main_quit()

class DHead(gtk.Window):
    """ To be used in a subprocess. This simplifies waiting for user-Input. """
    def escape(q, unused_widget, unused_event = None): q.destroy(); destruct()
    def __init__(q, s):
        gtk.Window.__init__(q, gtk.WINDOW_TOPLEVEL)
        q.set_title('Note') # for the taskbar
        q.set_property('opacity', 1.0) # avoids a gtk-warning about SetWindowLong
        q.set_property('decorated', False)
        q.modify_bg(0, colop('#520'))
        q.set_keep_above(True)
        q.connect('delete_event', loeschen)
        q.connect('destroy', destruct)

        q.vOutest = gtk.VBox(); q.vOutest.show()

        ev = gtk.EventBox(); ev.modify_bg(0,colop("#fa9")); ev.set_above_child(True)
        q.lb = gtk.Label(s); q.lb.set_padding(43, 21)
        q.lb.modify_font(pango.FontDescription('Verdana bold 12')); q.lb.show()
        ev.add(q.lb); ev.show()
        ev.connect('button_press_event', q.escape)
        ev.connect('key_release_event', q.escape)

        q.vOutest.pack_start(ev, fill=True,expand=True)
	q.add(q.vOutest)
        q.show()

class Dia(DHead):
    """ To be used in a subprocess. This simplifies waiting for user-Input. """
    def act(q, widget, event):
        if event.hardware_keycode in (27, 13):
            print widget.get_text() # writes on a pipe to the parent
            destruct()
    def escape(q, unused_w, unused_e):
        print ''
        destruct()

    def __init__(q, s, default = ''):
        DHead.__init__(q, s)
        q.e = gtk.Entry(); q.e.set_alignment(0.5); q.e.show(); q.e.set_text(default)
        q.e.modify_base(0, colop('#f0e0c0'))
        q.e.modify_font(pango.FontDescription('Verdana 14'))
        q.set_title('Question')
        q.e.connect('key_release_event', q.act)
        q.vOutest.pack_start(q.e, fill=False,expand=False)

try:
    s = sys.argv[2]
    D = Dia(sys.argv[1], s)
except:
    try: D = Dia(sys.argv[1])
    except: D = Dia('Bug in OKamba - Question missing')

D.show()
D.e.grab_focus()
gtk.main()

#Joost


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]