Is this a bug? Using a touch input (With mouse input on) on a button but nothing is done - construct-2

I am using a button to transit to another layer. But I can't transit to that layer. I am using construct 3.
When I click on that button
onTouched an object (the object is that button) -> Go to layer (Layer02)
But nothing happens. I am using Touch but I have set the mouse input on. I used other object to try such as text field, and it works. Everything works except when I used button.
Is it a bug? Or I am not doing it right. The variables you see in the picture are for debugging purposes.
These are my events:

I think you refer to "transit to another layout" (not layer) 😉
On your screenshot I see all your events are OK. If you add Touch doesn't need add Mouse (you can use the mouse to simulate touch on browser).
I create a new project with the same events and works correctly, I attach a .c3p so you can try it. 😌
https://www.dropbox.com/s/7x1r27rs5a6k5d0/button_layout.c3p?dl=0

Related

selenium webdriver can't drag and drop fullcalendar events

I'm using the selenium webdriver (python) to automate testing of an app that uses the fullcalendar js plugin library. However, I'm having trouble automating dragging and dropping events to the calendar.
After a lot of experimentation, I can see that the test code below moves the event element to the correct location. When this action is done by hand on the browser, the calendar square that you are hovering on turns blue and the event, when dropped, is added to the calendar. This does not happen when the event is moved via automation -- the calendar square does not turn blue, and the event, when dropped, returns to its original position.
How can I get the same drag and drop functionality under automation?
evt = self.sel.find_element_by_css_selector('#evt1')
cal_square = self.sel.find_element_by_css_selector('td[data-date=\'%s\']' % move_to_date.isoformat())
ActionChains(self.sel).click_and_hold(evt).move_to_element(cal_square).perform()
time.sleep(10)
ActionChains(self.sel).release().perform()
time.sleep(5)
Here's a link to at test case which demonstrates the issue:
https://gist.github.com/jenniferlianne/9353489
I have a problem with time while drag and drop. I need some wait after move_to_element and release, but after move_to_element.perform my mouse gets to the coordinates of dragged element and release over there. What can I do with that?
After a while I try this:
parent = driver.find_element_by_xpath("//*[contains(text(), 'Parent')]")
welcome_form = driver.find_element_by_id(link.my_forms["welcome_to_pdf_form"])
actions.click_and_hold(welcome_form).move_to_element(parent).click().perform()
I don't actually know why it works. I thought it will generate click after click and I will get an error but works fine.
My problem was that -- as Micheal pointed out -- after the move, the mouse was reverting back to original element position and doing the release() there. You can supply the release() function with the element where you want the 'mouse up' to happen.
For whatever reason, this works:
ActionChains(self.sel).click_and_hold(
evt).move_to_element(cal_square).release(cal_square).perform()
While this does not:
ActionChains(self.sel).drag_and_drop(evt, cal_square).perform()

Drag finger from one button to another - want to un-trigger old button and trigger new button - Windows Store

I am working on a windows store application and I want to be able to drag between buttons so that the originally pressed button becomes deactivated and the newly "dragged onto" button becomes activated but I can't seem to get this to work.
I have 2 Buttons inside a StackPanel and the events I have on them are:
PointerPressed
PointerEntered
PointerReleased
PointerExited
PointerCanceled
PointerCaptureLost
PointerPressed and PointerEntered share the same event handler and the rest (the "deactivation" events) share the same event handler.
If I press one button my "activated" event handler is triggered and if I drag off it my "deactivated" event handler is triggered but if I then drag onto the second button the "activated" event handler isn't triggered again.
Strangely, if I start by dragging from off the StackPanel onto one of the buttons the "activated" event handler is triggered. I assume that it is something to do with the internal pointer management stuff but can't seem to find a workaround.
Does anyone know why this is happening and how I can get it to work how I want?
Thanks for your time.
Edit
Okay I've been researching some stuff and I've come across CapturePointer() and ReleasePointerCapture() but this seems to be broken - If I capture the pointer, when I take my finger off the screen, PointerReleased doesn't even get hit.
I've also realized why the "dragging from off the SP onto one of the buttons causes it to 'activate'" - this is because when a button is pressed it doesn't route its event but fires a Click event - meaning the same pointer cannot fire a PointerEntered event of another button, but if it starts outside a Button it will trigger PointerEntered.
This doesn't get me much further but it is a little extra info :)
The concept of Button is a bit unique in regard to mouse capture and how dragging away from it happens. In your scenario I'm not sure if the event model around Button will work correctly for you. On Button, when a pointer is depressed (mouse) it has capture until it is released. This is not the same for touch where a press and drag away is different because in touch there isn't any explicit capture unless you create it.
So what you are hitting is going to be a slight conflict between mouse/touch interactions anyway using Button -- using some other UI element (not sure if you have a styled button) should get you what you want.

how can I know how a popup menu was closed?

I have a WPF DatePicker, and like any datepicker, it has a built-in calendar that you can open by clicking on the small calendar icon.
this calendar is put in a popup menu, so that it behaves like one, i.e.: once it is opened, there are 2 ways to close it:
Validate you choice (click on a date with the mouse, hit "Enter" with a date highlighted, etc...)
cancel (hit "Echap", click outside the popup, etc...)
My problem is, I need to know which one was used, and I can't seem to find a way to do this.
Right now I listen to the "CalendarClosedEvent" but it doesn't tell me How the calendar was closed.
I also used the "PreviewKeyDownEvent" to trap the "Echap" key, which works well, except it does not cover the case when the user clicks outside the calendar to close it.
Is there a way to do this? if so, what is it?
(NB: I'd be happy with a generic answer about the popup menu object and not the calendar object in the datePicker)
For the DatePicker at least, you can set the SelectedDate to null (which is actually the default so, just leave it). Then the SelectedDateChanged fires any time the user clicks inside the control.
This is the only thing I could find to mark a difference. Hope it helps.

WP7 - Is it possible to automatically launch the camera capture without a button press?

I'm using this code to grab barcodes from the camera:
http://blogs.msdn.com/b/stephe/archive/2011/11/07/wp7-real-time-video-scan-a-barcode-qr-code-in-your-app-using-zxing-lib.aspx
It works fine if it is called from a button press, but if you put it in page load nothing happens, I assume this is a security feature?
Is there any way around it?
Thanks
All must be Ok with Loaded event. Maybe you put code inside constructor instead...

Show NotifyIcon Context Menu and Control Its Position?

I'm trying to show a context menu when I left-click a NotifyIcon. Just calling NotifyIcon.ContextMenuStrip.Show() doesn't work very well. A solution has been posted here before that calls a secret method using Reflection:
Dim mi As System.Reflection.MethodInfo = GetType(NotifyIcon).GetMethod("ShowContextMenu", Reflection.BindingFlags.Instance Or Reflection.BindingFlags.NonPublic)
mi.Invoke(Icon, Nothing)
This works great, except that I also need to control where the menu is shown. I want to wait for the SystemInformation.DoubleClickTime to elapse between receiving the NotifyIcon.MouseUp event and displaying the menu, so that I can handle single-clicks and double-clicks separately. But invoking the ShowContextMenu method displays the menu at the current mouse position when ShowContextMenu is called, not when the icon was actually clicked. Which means that if the mouse moved during the DoubleClickTime, the menu will be displayed in a different part of the screen. So if I can control where the menu is shown, I can just save the mouse coordinates when I receive the MouseUp event, and then I can ensure that the menu is displayed near the icon. Is there a way to do this?
Thanks in advance.
Well, I just discovered that there are existing programs that exhibit this same behavior. I just went through all the icons in my system tray and about half of them do it. If you left-click the icon and then move the mouse during the delay before the menu appears, the menu will appear at the last mouse location, wherever that is on the screen. Snagit is one application that does this. Outlook is the only program in my tray that always shows the menu where I clicked the icon. But Snagit looks like it's using a .NET ContextMenuStrip, while Outlook is probably using a native menu.
So either this is standard behavior, or it's a problem that no one else has been able to solve either. And as a user, I've never noticed this behavior until yesterday when I was testing my own application. So I guess it's not that big of a deal and I won't worry about it.

Resources