diff options
author | Niraj Modi | 2018-06-25 08:03:58 +0000 |
---|---|---|
committer | Niraj Modi | 2018-06-25 08:04:34 +0000 |
commit | d0a4e5d0984fcbcd61edd6cf410889b94f78bfb9 (patch) | |
tree | 375adcaee4c29c153475a0212dcb67348b3a1a1f | |
parent | 4eb5224aa4aa3bc6ec483c1e7f7da3564089a7ee (diff) | |
download | eclipse.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>
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 ();
|