summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--vcl/inc/jsdialog/jsdialogbuilder.hxx2
-rw-r--r--vcl/jsdialog/executor.cxx11
-rw-r--r--vcl/jsdialog/jsdialogbuilder.cxx5
3 files changed, 15 insertions, 3 deletions
diff --git a/vcl/inc/jsdialog/jsdialogbuilder.hxx b/vcl/inc/jsdialog/jsdialogbuilder.hxx
index dc6e04c3eb4e..f632753d35b1 100644
--- a/vcl/inc/jsdialog/jsdialogbuilder.hxx
+++ b/vcl/inc/jsdialog/jsdialogbuilder.hxx
@@ -621,7 +621,7 @@ public:
virtual void set_active(int pos) override;
virtual bool changed_by_direct_pick() const override;
- void render_entry(int pos);
+ void render_entry(int pos, int dpix, int dpiy);
};
class JSNotebook final : public JSWidget<SalInstanceNotebook, ::TabControl>
diff --git a/vcl/jsdialog/executor.cxx b/vcl/jsdialog/executor.cxx
index 57a1c4db22d8..17c56d78e61e 100644
--- a/vcl/jsdialog/executor.cxx
+++ b/vcl/jsdialog/executor.cxx
@@ -133,7 +133,16 @@ bool ExecuteAction(const OUString& nWindowId, const OUString& rWidget, StringMap
{
auto pJSCombobox = dynamic_cast<JSComboBox*>(pWidget);
if (pJSCombobox)
- pJSCombobox->render_entry(o3tl::toInt32(rData["data"]));
+ {
+ // pos;dpix;dpiy
+ const OUString& sParams = rData["data"];
+ const OUString aPos = sParams.getToken(0, ';');
+ const OUString aDpiScaleX = sParams.getToken(1, ';');
+ const OUString aDpiScaleY = sParams.getToken(2, ';');
+
+ pJSCombobox->render_entry(o3tl::toInt32(aPos), o3tl::toInt32(aDpiScaleX),
+ o3tl::toInt32(aDpiScaleY));
+ }
return true;
}
}
diff --git a/vcl/jsdialog/jsdialogbuilder.cxx b/vcl/jsdialog/jsdialogbuilder.cxx
index 8f7949c474ca..cd191d15a9d8 100644
--- a/vcl/jsdialog/jsdialogbuilder.cxx
+++ b/vcl/jsdialog/jsdialogbuilder.cxx
@@ -1664,9 +1664,12 @@ void JSComboBox::set_active(int pos)
bool JSComboBox::changed_by_direct_pick() const { return true; }
-void JSComboBox::render_entry(int pos)
+void JSComboBox::render_entry(int pos, int dpix, int dpiy)
{
ScopedVclPtrInstance<VirtualDevice> pDevice(DeviceFormat::WITH_ALPHA);
+ pDevice->SetDPIX(96.0 * dpix / 100);
+ pDevice->SetDPIY(96.0 * dpiy / 100);
+
Size aRenderSize = signal_custom_get_size(*pDevice);
pDevice->SetOutputSize(aRenderSize);