Made Linux event local to event handler. Cleaned up file choosing.
git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@955 dfc29bdd-3216-0410-991c-e03cc46cb475master
parent
efc44f9bf7
commit
75bc99e67a
|
@ -176,7 +176,7 @@ bool CGUIFileOpenDialog::OnEvent(SEvent event)
|
|||
|
||||
case EGET_LISTBOX_SELECTED_AGAIN:
|
||||
{
|
||||
s32 selected = FileBox->getSelected();
|
||||
const s32 selected = FileBox->getSelected();
|
||||
if (FileList && FileSystem)
|
||||
{
|
||||
if (FileList->isDirectory(selected))
|
||||
|
|
|
@ -378,16 +378,14 @@ bool CGUIListBox::OnEvent(SEvent event)
|
|||
}
|
||||
|
||||
case EMIE_LMOUSE_LEFT_UP:
|
||||
|
||||
if (!isPointInside(p))
|
||||
{
|
||||
Selecting = false;
|
||||
return true;
|
||||
}
|
||||
|
||||
{
|
||||
Selecting = false;
|
||||
selectNew(event.MouseInput.Y);
|
||||
|
||||
if (isPointInside(p))
|
||||
selectNew(event.MouseInput.Y);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
case EMIE_MOUSE_MOVED:
|
||||
if (Selecting || MoveOverSelect)
|
||||
|
@ -420,11 +418,11 @@ void CGUIListBox::selectNew(s32 ypos, bool onlyHover)
|
|||
if (ItemHeight!=0)
|
||||
Selected = ((ypos - AbsoluteRect.UpperLeftCorner.Y - 1) + ScrollBar->getPos()) / ItemHeight;
|
||||
|
||||
if (Selected >= (s32)Items.size())
|
||||
Selected = Items.size() - 1;
|
||||
else
|
||||
if (Selected<0)
|
||||
Selected = 0;
|
||||
else
|
||||
if ((u32)Selected >= Items.size())
|
||||
Selected = Items.size() - 1;
|
||||
|
||||
recalculateScrollPos();
|
||||
|
||||
|
|
|
@ -671,6 +671,7 @@ bool CIrrDeviceLinux::run()
|
|||
|
||||
while (XPending(display) > 0 && !Close)
|
||||
{
|
||||
XEvent event;
|
||||
XNextEvent(display, &event);
|
||||
|
||||
switch (event.type)
|
||||
|
@ -773,16 +774,16 @@ bool CIrrDeviceLinux::run()
|
|||
break;
|
||||
|
||||
case KeyRelease:
|
||||
if (!AutorepeatSupport)
|
||||
if (0 == AutorepeatSupport)
|
||||
{
|
||||
// check for Autorepeat manually
|
||||
// We'll do the same as Windows does: Only send KeyPressed
|
||||
// So every KeyRelease is a real release
|
||||
XEvent next_event;
|
||||
XPeekEvent (event.xkey.display, &next_event);
|
||||
if (next_event.type == KeyPress &&
|
||||
next_event.xkey.keycode == event.xkey.keycode &&
|
||||
next_event.xkey.time == event.xkey.time)
|
||||
if ((next_event.type == KeyPress) &&
|
||||
(next_event.xkey.keycode == event.xkey.keycode) &&
|
||||
(next_event.xkey.time == event.xkey.time))
|
||||
{
|
||||
/* Ignore the key release event */
|
||||
break;
|
||||
|
|
|
@ -294,7 +294,6 @@ namespace irr
|
|||
Window window;
|
||||
XSetWindowAttributes attributes;
|
||||
XSizeHints* StdHints;
|
||||
XEvent event;
|
||||
XImage* SoftwareImage;
|
||||
#ifdef _IRR_LINUX_X11_VIDMODE_
|
||||
XF86VidModeModeInfo oldVideoMode;
|
||||
|
|
Loading…
Reference in New Issue