Text blurring at any text options - wpf

After clicking, for example, on a button with no handler (that is no any reation axcept button clicking animation) I have this ugly effect on my eyes:
Blurring of the text on the button goes off in a second (from the first picture to the second and so on to the sharpness), then the text gets sharpness. I have this effect at any combinations of "TextOptions" options in XAML including TextOptions.TextFormattingMode="Display".
If I click on a button which raises, for example, select file dialog window, everything seems well.
How to escape this blur? Have you ever seen this effect?
In addition. This effect appears only with TextSize=11 and Aero is disabled. With TextSize equals any another value all goes well. But 11 is a default value so everybody can see this bug!

I don't know if you've fixed this yet or not, but the solution is to use the flag UseLayoutRounding="True". Throw that on the button style and it will be fixed.

Related

Can't properly force a component on-screen with scrollComponentToVisible

On a given form, we replace one component with another.
The original component is a series of TextFields, and the new form is some informational text and a button. We hide the first one, and show the second one (the UI designer has both Containers within the form).
I tried using scrollRectToVisible with various values but it didn't seem to make any difference with the scrolling.
continueButtonContainer.setHidden(false);
f.forceRevalidate();
Button continueButton =
(Button)StateMachine.GetInstance().findByName("ButtonContinue", f);
f.scrollComponentToVisible(continueButtonContainer);
f.scrollComponentToVisible(continueButton);
I'm expecting the continue button to be near the top of the screen.
If the screen was scrolled before displaying the continue button, the button ends up right at the bottom of the screen (it was below the bottom of the screen before I put in the scrollComponentToVisible line(s).
After the user scrolls the screen, the button goes up to where it needs to be, and stays there.
If the screen is not scrolled, the button appears where it should be.
I know I can probably add some invisible containers underneath the button and force them onto the screen, but I would rather have a slightly more robust solution.
There are a few issues with this. First you are using forceRevalidate which should be used in very rare cases.
Second it seems that you are invoking this on a Form, this is a bit misleading. While it seems that:
f.add(myCmp);
Adds a component to the form it is really a synonym to:
f.getContentPane().add(myCmp);
That's important because you need to invoke the scrollComponentToVisible on the scrollable container which will actually do the work and ideally be the direct parent of said component. I'm assuming it's the content pane in your case but it depends on layout etc.
The last part is letting the layout do its job. If you are invoking this before the form is showing this might not work. Notice that doing it after a call to show is meaningless as the form might take time with transitions. You can use a show listener or override the laidOut callback method to perform things like this.

Why does the first button pressed shrink in codenameone?

I am a novice programmer working on a project that has buttons change color when pressed (among other things). I am having a problem that the first button I click shrinks (the padding increases?) when it is clicked, but it still works and does everything it is supposed to. I have tried looking through theme.res to find a way to stop the button from shrinking when pressed and I have tried looking for an answer online, but have not found a solution. Thanks!
In the Resource Editor(theme.res), go to "Themes" -> "Unselected" tab. Right click over the style you use for the button and press Derive All.

Is it possible to setup a toggle button when includeNativeBool is set to false?

According to the Developer Guide, to make a toggle button I should run setToggle(true) on a CheckBox. I couldn't get that to work at first, so I tried on a new theme and it worked just fine. After some experimentation I found that this only happens when includeNativeBool constant is set to false.
When I press the button, it changes to the pressed state, but when I release it, it changes back to the unselected/selected state. However, when I press it a second time, it doesn't change to the pressed state at all (maybe because it's internally "checked" already), and when I release it nothing happens. When I press it a third time, it behaves like the first, and so on.
I suggest not removing the includeNativeBool, you will run into basic complexities.
The toggle button works just as well without includeNativeBool but the the styles for ToggleButton won't be in the theme. Assuming you styled Button just use setUIID("Button");

Is it possible to prevent userclick on a deactivated window but allow tooltips?

I have two windows open at a time, Suppose I click one button on a deactivated(non focused) window, I dont want the code behind the button to work, unless the user click the button again. At the same time, I want to show the tooltip when the user place the cursor on it.
you can use following property to show tool tips on disabled state
ToolTipService.ShowOnDisabled="True"
I put IsHitTestVisible = false in the grid of the window where I want the above behaviour and I get the expected behaviour
Thanks

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