summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tools/inc/tools/wintypes.hxx1
-rw-r--r--vcl/inc/svids.hrc1
-rw-r--r--vcl/inc/vcl/msgbox.hxx4
-rw-r--r--vcl/source/src/btntext.src5
-rw-r--r--vcl/source/window/msgbox.cxx14
5 files changed, 25 insertions, 0 deletions
diff --git a/tools/inc/tools/wintypes.hxx b/tools/inc/tools/wintypes.hxx
index e4f0a0daf7f1..782066944941 100644
--- a/tools/inc/tools/wintypes.hxx
+++ b/tools/inc/tools/wintypes.hxx
@@ -336,6 +336,7 @@ typedef sal_uInt16 StandardButtonType;
#define BUTTON_ABORT ((StandardButtonType)9)
#define BUTTON_LESS ((StandardButtonType)10)
#define BUTTON_COUNT 11
+#define BUTTON_COPY 12
// --------------------------------------------
// - prominent place for ListBox window types -
diff --git a/vcl/inc/svids.hrc b/vcl/inc/svids.hrc
index 5eba31828f38..e337bc724d7d 100644
--- a/vcl/inc/svids.hrc
+++ b/vcl/inc/svids.hrc
@@ -183,6 +183,7 @@
#define SV_BUTTONTEXT_IGNORE 10108
#define SV_BUTTONTEXT_ABORT 10109
#define SV_BUTTONTEXT_LESS 10110
+#define SV_BUTTONTEXT_COPY 10111
#define SV_STDTEXT_FIRST SV_STDTEXT_SERVICENOTAVAILABLE
#define SV_STDTEXT_SERVICENOTAVAILABLE 10200
diff --git a/vcl/inc/vcl/msgbox.hxx b/vcl/inc/vcl/msgbox.hxx
index fb960b847ff7..1c1dcee01d44 100644
--- a/vcl/inc/vcl/msgbox.hxx
+++ b/vcl/inc/vcl/msgbox.hxx
@@ -34,6 +34,8 @@
#include <vcl/btndlg.hxx>
#include <vcl/image.hxx>
#include <vcl/bitmap.hxx>
+#include <vcl/button.hxx>
+
class FixedText;
class FixedImage;
class CheckBox;
@@ -104,6 +106,8 @@ public:
sal_Bool GetCheckBoxState() const;
virtual Size GetOptimalSize(WindowSizeType eType) const;
+
+ DECL_LINK( ClickHdl, Button* );
};
// -----------
diff --git a/vcl/source/src/btntext.src b/vcl/source/src/btntext.src
index c0303aac0f1f..6762f085a0e8 100644
--- a/vcl/source/src/btntext.src
+++ b/vcl/source/src/btntext.src
@@ -69,6 +69,11 @@ String SV_BUTTONTEXT_LESS
Text [ en-US ] = "~Less";
};
+String SV_BUTTONTEXT_COPY
+{
+ Text [ en-US ] = "Copy to Clipboard";
+};
+
String SV_BUTTONTEXT_IGNORE
{
Text [ en-US ] = "~Ignore";
diff --git a/vcl/source/window/msgbox.cxx b/vcl/source/window/msgbox.cxx
index 4e5e796657f9..3293929a4fe4 100644
--- a/vcl/source/window/msgbox.cxx
+++ b/vcl/source/window/msgbox.cxx
@@ -34,6 +34,7 @@
#include <brdwin.hxx>
#include <window.h>
+#include <vcl/edit.hxx>
#include <vcl/metric.hxx>
#include <vcl/svapp.hxx>
#include <vcl/wrkwin.hxx>
@@ -399,6 +400,10 @@ void MessBox::ImplPosControls()
mpCheckBox->Show();
}
+ AddButton( String( ResId( SV_BUTTONTEXT_COPY, *ImplGetResMgr() ) ), BUTTON_COPY, 0 );
+ Button* pCopyBtn = GetPushButton( BUTTON_COPY );
+ pCopyBtn->SetClickHdl( LINK( this, MessBox, ClickHdl ) );
+
mpFixedText = new FixedText( this, nWinStyle );
if( mpFixedText->GetStyle() & WB_EXTRAOFFSET ) // TODO: use CalcMinimumSize() instead
aFixedSize.Width() += 2;
@@ -408,6 +413,15 @@ void MessBox::ImplPosControls()
SetPageSizePixel( aPageSize );
}
+IMPL_LINK( MessBox, ClickHdl, Button*, pBtn )
+{
+ Edit aCopyHelper( this );
+ aCopyHelper.SetText( maMessText, Selection( 0, maMessText.Len() ) );
+ aCopyHelper.Copy();
+
+ return 0;
+}
+
// -----------------------------------------------------------------------
void MessBox::StateChanged( StateChangedType nType )