8166594: Taskbar.setWindowProgressValue() spec does not specify expected visual behavior of setWindowProgressValue()

Reviewed-by: serb, ssadetsky
This commit is contained in:
Alexander Zvegintsev 2016-11-08 13:45:06 +03:00
parent 9fc6d8f3aa
commit 89e21fa724
2 changed files with 29 additions and 4 deletions

View File

@ -407,10 +407,21 @@ public class Taskbar {
}
/**
* Displays progress for specified window.
* Displays a determinate progress bar in the task area for the specified
* window.
* <br>
* The visual behavior is platform and {@link State} dependent.
* <br>
* This call cancels the {@link State#INDETERMINATE INDETERMINATE} state
* of the window.
* <br>
* Note that when multiple windows is grouped in the task area
* the behavior is platform specific.
*
* @param w window to update
* @param value from 0 to 100, other to disable progress indication
* @param value from 0 to 100, other to switch to {@link State#OFF} state
* and disable progress indication
* @see #setWindowProgressState(java.awt.Window, State)
* @throws SecurityException if a security manager exists and it denies the
* {@code RuntimePermission("canProcessApplicationEvents")} permission.
* @throws UnsupportedOperationException if the current platform
@ -426,14 +437,21 @@ public class Taskbar {
/**
* Sets a progress state for a specified window.
* <br>
* Each state displays a progress in a platform-dependent way.
* <br>
* Note than switching from {@link State#INDETERMINATE INDETERMINATE} state
* to any of determinate states may reset value set by
* {@link #setWindowProgressValue(java.awt.Window, int) setWindowProgressValue}
*
* @param w window
* @param state to change to
* @see State#OFF
* @see State#NORMAL
* @see State#PAUSED
* @see State#INDETERMINATE
* @see State#ERROR
* @see State#INDETERMINATE
* @see #setWindowProgressValue(java.awt.Window, int)
* @throws SecurityException if a security manager exists and it denies the
* {@code RuntimePermission("canProcessApplicationEvents")} permission.
* @throws UnsupportedOperationException if the current platform

View File

@ -58,7 +58,11 @@ JNIEXPORT jboolean JNICALL Java_sun_awt_windows_WTaskbarPeer_nativeInit
JNIEXPORT void JNICALL Java_sun_awt_windows_WTaskbarPeer_setProgressValue
(JNIEnv *, jobject, jlong window, jint value)
{
m_Taskbar->SetProgressValue((HWND)window, value, 100);
if (value < 0 || value > 100) {
m_Taskbar->SetProgressState((HWND)window, TBPF_NOPROGRESS);
} else {
m_Taskbar->SetProgressValue((HWND)window, value, 100);
}
}
@ -88,6 +92,9 @@ JNIEXPORT void JNICALL Java_sun_awt_windows_WTaskbarPeer_setProgressState
flag = TBPF_NOPROGRESS;
} else if (strcmp(valueNative, "NORMAL") == 0) {
flag = TBPF_NORMAL;
// Switching from TBPF_INDETERMINATE to TBPF_NORMAL has no effect
m_Taskbar->SetProgressState((HWND)window, TBPF_PAUSED);
} else if (strcmp(valueNative, "PAUSED") == 0) {
flag = TBPF_PAUSED;
} else if (strcmp(valueNative, "INDETERMINATE") == 0) {