Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNiraj Modi2018-06-25 08:03:58 +0000
committerNiraj Modi2018-06-25 08:04:34 +0000
commitd0a4e5d0984fcbcd61edd6cf410889b94f78bfb9 (patch)
tree375adcaee4c29c153475a0212dcb67348b3a1a1f
parent4eb5224aa4aa3bc6ec483c1e7f7da3564089a7ee (diff)
downloadeclipse.platform.swt-d0a4e5d0984fcbcd61edd6cf410889b94f78bfb9.tar.gz
eclipse.platform.swt-d0a4e5d0984fcbcd61edd6cf410889b94f78bfb9.tar.xz
eclipse.platform.swt-d0a4e5d0984fcbcd61edd6cf410889b94f78bfb9.zip
- Updated Shell/CTabFolder/CTabItem classes for image refresh on DPI
change - Widget.setZoom() method needs to be made public for CTabFolder to override - Widget.currentDeviceZoom for accessing from CTabFolder Change-Id: I5004284bd0bd179b2d5c3c5123e5876189bf6c09 Signed-off-by: nirajmodi <nirajmodi4u@live.in>
-rw-r--r--bundles/org.eclipse.swt/.settings/.api_filters8
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabFolder.java11
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabItem.java13
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Button.java4
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Composite.java4
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Menu.java5
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/MenuItem.java7
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Shell.java8
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/ToolBar.java6
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/ToolItem.java7
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Widget.java10
-rw-r--r--examples/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet373.java5
12 files changed, 70 insertions, 18 deletions
diff --git a/bundles/org.eclipse.swt/.settings/.api_filters b/bundles/org.eclipse.swt/.settings/.api_filters
index b4a44dcf40..8093859345 100644
--- a/bundles/org.eclipse.swt/.settings/.api_filters
+++ b/bundles/org.eclipse.swt/.settings/.api_filters
@@ -1880,4 +1880,12 @@
</message_arguments>
</filter>
</resource>
+ <resource path="Eclipse SWT/win32/org/eclipse/swt/widgets/Widget.java" type="org.eclipse.swt.widgets.Widget">
+ <filter id="336658481">
+ <message_arguments>
+ <message_argument value="org.eclipse.swt.widgets.Widget"/>
+ <message_argument value="currentDeviceZoom"/>
+ </message_arguments>
+ </filter>
+ </resource>
</component>
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabFolder.java b/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabFolder.java
index 3c3d6ce74c..70028e4a69 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabFolder.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabFolder.java
@@ -3615,6 +3615,17 @@ public void setUnselectedImageVisible(boolean visible) {
showUnselectedImage = visible;
updateFolder(REDRAW);
}
+
+@Override
+public boolean setZoom (int zoom) {
+ boolean refreshed = (this.currentDeviceZoom == zoom);
+ this.currentDeviceZoom = zoom;
+ for (CTabItem item: getItems()) {
+ refreshed |= item.setZoom(zoom);
+ };
+ return refreshed;
+}
+
/**
* Shows the item. If the item is already showing in the receiver,
* this method simply returns. Otherwise, the items are scrolled until
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabItem.java b/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabItem.java
index 5b30686160..f006ab76e0 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabItem.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/CTabItem.java
@@ -444,4 +444,17 @@ public void setToolTipText (String string) {
toolTipText = string;
}
+@Override
+public boolean setZoom (int zoom) {
+ boolean refreshed = (this.currentDeviceZoom == zoom);
+ this.currentDeviceZoom = zoom;
+ // Refresh the image
+ Image image = getImage();
+ if (image != null) {
+ refreshed |= image.setZoom (zoom);
+ setImage (image);
+ }
+ return refreshed;
+}
+
}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Button.java b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Button.java
index 8e3347f2f6..7ae45281a5 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Button.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Button.java
@@ -1079,9 +1079,9 @@ public void setText (String string) {
}
@Override
-boolean setZoom (int zoom) {
+public boolean setZoom (int zoom) {
boolean refreshed = super.setZoom (zoom);
- // Refresh image on DPI change
+ // Refresh the image
if(image != null) {
refreshed = image.setZoom (zoom);
if (refreshed) {
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Composite.java b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Composite.java
index ecbca25548..29676a9d6b 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Composite.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Composite.java
@@ -1218,10 +1218,10 @@ boolean setTabGroupFocus () {
}
@Override
-boolean setZoom (int zoom) {
+public boolean setZoom (int zoom) {
boolean refreshed = super.setZoom (zoom);
for (Control control: getChildren()) {
- control.currentDeviceZoom = this.currentDeviceZoom;
+// control.currentDeviceZoom = this.currentDeviceZoom;
refreshed |= control.setZoom(zoom);
};
this.redraw(true);
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Menu.java b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Menu.java
index d4660aaafa..7c33e8f9a8 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Menu.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Menu.java
@@ -1275,8 +1275,9 @@ public void setVisible (boolean visible) {
}
@Override
-boolean setZoom (int zoom) {
- boolean refreshed = super.setZoom (zoom);
+public boolean setZoom (int zoom) {
+ boolean refreshed = (this.currentDeviceZoom == zoom);
+ this.currentDeviceZoom = zoom;
for (MenuItem item : getItems()) {
refreshed |= item.setZoom (zoom);
}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/MenuItem.java b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/MenuItem.java
index e2cd7a7557..1bddae540a 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/MenuItem.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/MenuItem.java
@@ -1081,9 +1081,10 @@ public void setToolTipText (String toolTip) {
}
@Override
-boolean setZoom (int zoom) {
- boolean refreshed = super.setZoom (zoom);
- // Refresh the menu image
+public boolean setZoom (int zoom) {
+ boolean refreshed = (this.currentDeviceZoom == zoom);
+ this.currentDeviceZoom = zoom;
+ // Refresh the image
if (image != null) {
refreshed = image.setZoom (zoom);
setImage (image);
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Shell.java b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Shell.java
index a4a3187485..4bf57347de 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Shell.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Shell.java
@@ -2005,11 +2005,17 @@ public void setVisible (boolean visible) {
}
@Override
-boolean setZoom (int zoom) {
+public boolean setZoom (int zoom) {
boolean refreshed = super.setZoom (zoom);
+ // Refresh the image
+ if (image != null) {
+ refreshed = image.setZoom (zoom);
+ setImage (image);
+ }
if (menuBar != null) {
refreshed |= menuBar.setZoom (zoom);
}
+ this.requestLayout();
return refreshed;
}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/ToolBar.java b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/ToolBar.java
index 6fa051163e..71a727fcb0 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/ToolBar.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/ToolBar.java
@@ -187,9 +187,11 @@ void checkBuffered () {
protected void checkSubclass () {
if (!isValidSubclass ()) error (SWT.ERROR_INVALID_SUBCLASS);
}
+
@Override
-boolean setZoom(int zoom) {
- boolean refreshed = super.setZoom (zoom);
+public boolean setZoom(int zoom) {
+ boolean refreshed = (this.currentDeviceZoom == zoom);
+ this.currentDeviceZoom = zoom;
// Refresh image on DPI change
for (ToolItem item : _getItems ()) {
refreshed |=item.setZoom (zoom);
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/ToolItem.java b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/ToolItem.java
index 26d2885fe8..43a09b1820 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/ToolItem.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/ToolItem.java
@@ -722,9 +722,10 @@ public void setImage (Image image) {
}
@Override
-boolean setZoom (int zoom) {
- boolean refreshed = super.setZoom (zoom);
- // Refresh the menu image
+public boolean setZoom (int zoom) {
+ boolean refreshed = (this.currentDeviceZoom == zoom);
+ this.currentDeviceZoom = zoom;
+ // Refresh the image
if (image != null) {
refreshed = image.setZoom (zoom);
setImage (image);
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Widget.java b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Widget.java
index 9a20005019..02eb6a82a3 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Widget.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Widget.java
@@ -45,7 +45,12 @@ import org.eclipse.swt.internal.win32.*;
* @see <a href="http://www.eclipse.org/swt/">Sample code and further information</a>
*/
public abstract class Widget {
- int style, state, currentDeviceZoom = DPIUtil.getDeviceZoom();
+ /**
+ * s
+ * @since 3.107
+ */
+ protected int currentDeviceZoom = DPIUtil.getDeviceZoom();
+ int style, state;
Display display;
EventTable eventTable;
Object data;
@@ -1460,8 +1465,9 @@ boolean showMenu (int x, int y, int detail) {
* @param zoom
*
* @return true if Widget is refreshed
+ * @since 3.107
*/
-boolean setZoom (int zoom) {
+public boolean setZoom (int zoom) {
boolean refreshed = (this.currentDeviceZoom == zoom);
this.currentDeviceZoom = zoom;
return refreshed;
diff --git a/examples/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet373.java b/examples/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet373.java
index 332e8338f1..979ddefb84 100644
--- a/examples/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet373.java
+++ b/examples/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet373.java
@@ -64,6 +64,8 @@ public class Snippet373 {
System.setProperty("swt.autoScale", "quarter");
Display display = new Display();
final Image eclipse = new Image(display, filenameProvider);
+ final Image eclipseCTab1 = new Image(display, filenameProvider);
+ final Image eclipseCTab2 = new Image(display, filenameProvider);
Shell shell = new Shell(display);
shell.setImage(eclipse);
@@ -94,7 +96,7 @@ public class Snippet373 {
Text textMsg = new Text(folder, SWT.MULTI);
textMsg.setText("Content for Item "+i);
cTabItem.setControl(textMsg);
- cTabItem.setImage(eclipse);
+ cTabItem.setImage((i % 2 == 1) ? eclipseCTab1 : eclipseCTab2);
}
// PerMonitorV2 setting
@@ -152,6 +154,7 @@ public class Snippet373 {
int style = i % 2 == 1 ? SWT.DROP_DOWN : SWT.PUSH;
ToolItem toolItem = new ToolItem (toolBar, style);
toolItem.setImage (eclipse);
+ toolItem.setEnabled(i % 2 == 0);
}
toolBar.pack ();

Back to the top