[Libreoffice-commits] core.git: 2 commits - cui/source cui/uiconfig extras/source include/vcl solenv/bin solenv/sanitizers vcl/source vcl/unx
Libreoffice Gerrit user
logerrit at kemper.freedesktop.org
Sun Feb 17 15:46:21 UTC 2019
cui/source/dialogs/hangulhanjadlg.cxx | 267 ++++++++++---------------
cui/source/inc/hangulhanjadlg.hxx | 84 ++++---
cui/uiconfig/ui/hangulhanjaeditdictdialog.ui | 149 +++++++------
extras/source/glade/libreoffice-catalog.xml.in | 3
include/vcl/weld.hxx | 2
solenv/bin/native-code.py | 1
solenv/sanitizers/ui/cui.suppr | 4
vcl/source/app/salvtables.cxx | 63 +++++
vcl/unx/gtk3/gtk3gtkinst.cxx | 12 +
9 files changed, 305 insertions(+), 280 deletions(-)
New commits:
commit 1213cfde6b9052c1eb50b46d5cae2eef28d4b8b5
Author: Caolán McNamara <caolanm at redhat.com>
AuthorDate: Sat Feb 16 20:19:12 2019 +0000
Commit: Caolán McNamara <caolanm at redhat.com>
CommitDate: Sun Feb 17 16:46:13 2019 +0100
weld HangulHanjaEditDictDialog
Change-Id: If0d49a65735b66eaa8db11686099ed29b01711c4
Reviewed-on: https://gerrit.libreoffice.org/67929
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm at redhat.com>
Tested-by: Caolán McNamara <caolanm at redhat.com>
diff --git a/cui/source/dialogs/hangulhanjadlg.cxx b/cui/source/dialogs/hangulhanjadlg.cxx
index 53d72894911e..46fa519c8f3f 100644
--- a/cui/source/dialogs/hangulhanjadlg.cxx
+++ b/cui/source/dialogs/hangulhanjadlg.cxx
@@ -1063,8 +1063,8 @@ namespace svx
DBG_ASSERT( pEntry, "+HangulHanjaEditDictDialog::EditDictHdl(): call of edit should not be possible with no selection!" );
if( pEntry )
{
- ScopedVclPtrInstance< HangulHanjaEditDictDialog > aEdDlg(this, m_aDictList, m_pDictsLB->GetSelectedEntryPos());
- aEdDlg->Execute();
+ HangulHanjaEditDictDialog aEdDlg(GetFrameWeld(), m_aDictList, m_pDictsLB->GetSelectedEntryPos());
+ aEdDlg.run();
}
}
@@ -1324,12 +1324,12 @@ namespace svx
if( _bUp )
{
if( !m_pPrev )
- bRet = m_pScrollBar->GetThumbPos() > m_pScrollBar->GetRangeMin();
+ bRet = m_pScrollBar->vadjustment_get_value() > m_pScrollBar->vadjustment_get_lower();
}
else
{
if( !m_pNext )
- bRet = m_pScrollBar->GetThumbPos() < ( m_pScrollBar->GetRangeMax() - 4 );
+ bRet = m_pScrollBar->vadjustment_get_value() < ( m_pScrollBar->vadjustment_get_upper() - 4 );
}
return bRet;
@@ -1337,92 +1337,71 @@ namespace svx
void SuggestionEdit::DoJump( bool _bUp )
{
- const Link<Control&,void>& rLoseFocusHdl = GetLoseFocusHdl();
- rLoseFocusHdl.Call( *this );
- m_pScrollBar->SetThumbPos( m_pScrollBar->GetThumbPos() + ( _bUp? -1 : 1 ) );
-
- static_cast< HangulHanjaEditDictDialog* >( GetParentDialog() )->UpdateScrollbar();
+ m_pScrollBar->vadjustment_set_value( m_pScrollBar->vadjustment_get_value() + ( _bUp? -1 : 1 ) );
+ m_pParent->UpdateScrollbar();
}
- SuggestionEdit::SuggestionEdit( vcl::Window* pParent, WinBits nBits )
- : Edit(pParent, nBits)
+ SuggestionEdit::SuggestionEdit(std::unique_ptr<weld::Entry> xEntry, HangulHanjaEditDictDialog* pParent)
+ : m_pParent(pParent)
, m_pPrev(nullptr)
, m_pNext(nullptr)
, m_pScrollBar(nullptr)
+ , m_xEntry(std::move(xEntry))
{
+ m_xEntry->connect_key_press(LINK(this, SuggestionEdit, KeyInputHdl));
}
- SuggestionEdit::~SuggestionEdit()
- {
- disposeOnce();
- }
-
- void SuggestionEdit::dispose()
- {
- m_pPrev.clear();
- m_pNext.clear();
- m_pScrollBar.clear();
- Edit::dispose();
- }
-
- bool SuggestionEdit::PreNotify( NotifyEvent& rNEvt )
+ IMPL_LINK(SuggestionEdit, KeyInputHdl, const KeyEvent&, rKEvt, bool)
{
bool bHandled = false;
- if( rNEvt.GetType() == MouseNotifyEvent::KEYINPUT )
+
+ const vcl::KeyCode& rKeyCode = rKEvt.GetKeyCode();
+ sal_uInt16 nMod = rKeyCode.GetModifier();
+ sal_uInt16 nCode = rKeyCode.GetCode();
+ if( nCode == KEY_TAB && ( !nMod || KEY_SHIFT == nMod ) )
{
- const KeyEvent* pKEvt = rNEvt.GetKeyEvent();
- const vcl::KeyCode& rKeyCode = pKEvt->GetKeyCode();
- sal_uInt16 nMod = rKeyCode.GetModifier();
- sal_uInt16 nCode = rKeyCode.GetCode();
- if( nCode == KEY_TAB && ( !nMod || KEY_SHIFT == nMod ) )
+ bool bUp = KEY_SHIFT == nMod;
+ if( ShouldScroll( bUp ) )
{
- bool bUp = KEY_SHIFT == nMod;
- if( ShouldScroll( bUp ) )
- {
- DoJump( bUp );
- SetSelection( Selection( 0, SELECTION_MAX ) );
- // Tab-travel doesn't really happen, so emulate it by setting a selection manually
- bHandled = true;
- }
+ DoJump( bUp );
+ m_xEntry->select_region(0, -1);
+ // Tab-travel doesn't really happen, so emulate it by setting a selection manually
+ bHandled = true;
}
- else if( KEY_UP == nCode || KEY_DOWN == nCode )
+ }
+ else if( KEY_UP == nCode || KEY_DOWN == nCode )
+ {
+ bool bUp = KEY_UP == nCode;
+ if( ShouldScroll( bUp ) )
{
- bool bUp = KEY_UP == nCode;
- if( ShouldScroll( bUp ) )
- {
- DoJump( bUp );
- bHandled = true;
- }
- else if( bUp )
- {
- if( m_pPrev )
- {
- m_pPrev->GrabFocus();
- bHandled = true;
- }
- }
- else if( m_pNext )
+ DoJump( bUp );
+ bHandled = true;
+ }
+ else if( bUp )
+ {
+ if( m_pPrev )
{
- m_pNext->GrabFocus();
+ m_pPrev->grab_focus();
bHandled = true;
}
}
+ else if( m_pNext )
+ {
+ m_pNext->grab_focus();
+ bHandled = true;
+ }
}
- if( !bHandled )
- bHandled = Edit::PreNotify( rNEvt );
return bHandled;
}
- void SuggestionEdit::init( ScrollBar* pScrollBar, SuggestionEdit* pPrev, SuggestionEdit* pNext)
+ void SuggestionEdit::init(weld::ScrolledWindow* pScrollBar, SuggestionEdit* pPrev, SuggestionEdit* pNext)
{
m_pScrollBar = pScrollBar;
m_pPrev = pPrev;
m_pNext = pNext;
}
- VCL_BUILDER_FACTORY_ARGS(SuggestionEdit, WB_LEFT|WB_VCENTER|WB_BORDER)
-
namespace
{
bool GetConversions( const Reference< XConversionDictionary >& _xDict,
@@ -1450,47 +1429,46 @@ namespace svx
}
}
-
- IMPL_LINK_NOARG( HangulHanjaEditDictDialog, ScrollHdl, ScrollBar*, void )
+ IMPL_LINK_NOARG( HangulHanjaEditDictDialog, ScrollHdl, weld::ScrolledWindow&, void )
{
UpdateScrollbar();
}
- IMPL_LINK_NOARG( HangulHanjaEditDictDialog, OriginalModifyHdl, Edit&, void )
+ IMPL_LINK_NOARG( HangulHanjaEditDictDialog, OriginalModifyHdl, weld::ComboBox&, void )
{
m_bModifiedOriginal = true;
- m_aOriginal = comphelper::string::stripEnd( m_aOriginalLB->GetText(), ' ' );
+ m_aOriginal = comphelper::string::stripEnd( m_xOriginalLB->get_active_text(), ' ' );
UpdateSuggestions();
UpdateButtonStates();
}
- IMPL_LINK( HangulHanjaEditDictDialog, EditModifyHdl1, Edit&, rEdit, void )
+ IMPL_LINK( HangulHanjaEditDictDialog, EditModifyHdl1, weld::Entry&, rEdit, void )
{
EditModify( &rEdit, 0 );
}
- IMPL_LINK( HangulHanjaEditDictDialog, EditModifyHdl2, Edit&, rEdit, void )
+ IMPL_LINK( HangulHanjaEditDictDialog, EditModifyHdl2, weld::Entry&, rEdit, void )
{
EditModify( &rEdit, 1 );
}
- IMPL_LINK( HangulHanjaEditDictDialog, EditModifyHdl3, Edit&, rEdit, void )
+ IMPL_LINK( HangulHanjaEditDictDialog, EditModifyHdl3, weld::Entry&, rEdit, void )
{
EditModify( &rEdit, 2 );
}
- IMPL_LINK( HangulHanjaEditDictDialog, EditModifyHdl4, Edit&, rEdit, void )
+ IMPL_LINK( HangulHanjaEditDictDialog, EditModifyHdl4, weld::Entry&, rEdit, void )
{
EditModify( &rEdit, 3 );
}
- IMPL_LINK_NOARG( HangulHanjaEditDictDialog, BookLBSelectHdl, ListBox&, void )
+ IMPL_LINK_NOARG( HangulHanjaEditDictDialog, BookLBSelectHdl, weld::ComboBox&, void )
{
- InitEditDictDialog( m_aBookLB->GetSelectedEntryPos() );
+ InitEditDictDialog( m_xBookLB->get_active() );
}
- IMPL_LINK_NOARG( HangulHanjaEditDictDialog, NewPBPushHdl, Button*, void )
+ IMPL_LINK_NOARG( HangulHanjaEditDictDialog, NewPBPushHdl, weld::Button&, void )
{
DBG_ASSERT( m_pSuggestions, "-HangulHanjaEditDictDialog::NewPBPushHdl(): no suggestions... search in hell..." );
Reference< XConversionDictionary > xDict = m_rDictList[ m_nCurrentDict ];
@@ -1558,7 +1536,7 @@ namespace svx
return bRemovedSomething;
}
- IMPL_LINK_NOARG( HangulHanjaEditDictDialog, DeletePBPushHdl, Button*, void )
+ IMPL_LINK_NOARG( HangulHanjaEditDictDialog, DeletePBPushHdl, weld::Button&, void )
{
if( DeleteEntryFromDictionary( m_rDictList[ m_nCurrentDict ] ) )
{
@@ -1568,22 +1546,23 @@ namespace svx
}
}
- void HangulHanjaEditDictDialog::InitEditDictDialog( sal_uInt32 _nSelDict )
+ void HangulHanjaEditDictDialog::InitEditDictDialog( sal_uInt32 nSelDict )
{
if( m_pSuggestions )
m_pSuggestions->Clear();
- if( m_nCurrentDict != _nSelDict )
+ if( m_nCurrentDict != nSelDict )
{
- m_nCurrentDict = _nSelDict;
+ m_nCurrentDict = nSelDict;
m_aOriginal.clear();
m_bModifiedOriginal = true;
}
UpdateOriginalLB();
- m_aOriginalLB->SetText( !m_aOriginal.isEmpty() ? m_aOriginal : m_aEditHintText, Selection( 0, SELECTION_MAX ) );
- m_aOriginalLB->GrabFocus();
+ m_xOriginalLB->set_entry_text( !m_aOriginal.isEmpty() ? m_aOriginal : m_aEditHintText);
+ m_xOriginalLB->select_entry_region(0, -1);
+ m_xOriginalLB->grab_focus();
UpdateSuggestions();
UpdateButtonStates();
@@ -1591,7 +1570,7 @@ namespace svx
void HangulHanjaEditDictDialog::UpdateOriginalLB()
{
- m_aOriginalLB->Clear();
+ m_xOriginalLB->clear();
Reference< XConversionDictionary > xDict = m_rDictList[ m_nCurrentDict ];
if( xDict.is() )
{
@@ -1600,7 +1579,7 @@ namespace svx
OUString* pEntry = aEntries.getArray();
while( n )
{
- m_aOriginalLB->InsertEntry( *pEntry );
+ m_xOriginalLB->append_text( *pEntry );
++pEntry;
--n;
@@ -1618,8 +1597,8 @@ namespace svx
bool bNew = bHaveValidOriginalString && m_pSuggestions && m_pSuggestions->GetCount() > 0;
bNew = bNew && ( m_bModifiedSuggestions || m_bModifiedOriginal );
- m_aNewPB->Enable( bNew );
- m_aDeletePB->Enable(!m_bModifiedOriginal && bHaveValidOriginalString);
+ m_xNewPB->set_sensitive( bNew );
+ m_xDeletePB->set_sensitive(!m_bModifiedOriginal && bHaveValidOriginalString);
}
void HangulHanjaEditDictDialog::UpdateSuggestions()
@@ -1652,26 +1631,26 @@ namespace svx
m_bModifiedSuggestions = false;
}
- m_aScrollSB->SetThumbPos( 0 );
+ m_xScrollSB->vadjustment_set_value( 0 );
UpdateScrollbar(); // will force edits to be filled new
}
- void HangulHanjaEditDictDialog::SetEditText( Edit& _rEdit, sal_uInt16 _nEntryNum )
+ void HangulHanjaEditDictDialog::SetEditText(SuggestionEdit& rEdit, sal_uInt16 nEntryNum)
{
OUString aStr;
if( m_pSuggestions )
{
- aStr = m_pSuggestions->Get( _nEntryNum );
+ aStr = m_pSuggestions->Get(nEntryNum);
}
- _rEdit.SetText( aStr );
+ rEdit.set_text(aStr);
}
- void HangulHanjaEditDictDialog::EditModify( Edit const * _pEdit, sal_uInt8 _nEntryOffset )
+ void HangulHanjaEditDictDialog::EditModify(const weld::Entry* pEdit, sal_uInt8 _nEntryOffset)
{
m_bModifiedSuggestions = true;
- OUString aTxt( _pEdit->GetText() );
+ OUString aTxt( pEdit->get_text() );
sal_uInt16 nEntryNum = m_nTopPos + _nEntryOffset;
if( aTxt.isEmpty() )
{
@@ -1690,54 +1669,55 @@ namespace svx
UpdateButtonStates();
}
- HangulHanjaEditDictDialog::HangulHanjaEditDictDialog( vcl::Window* _pParent, HHDictList& _rDictList, sal_uInt32 _nSelDict )
- :ModalDialog ( _pParent, "HangulHanjaEditDictDialog", "cui/ui/hangulhanjaeditdictdialog.ui" )
- ,m_aEditHintText ( CuiResId(RID_SVXSTR_EDITHINT) )
- ,m_rDictList ( _rDictList )
- ,m_nCurrentDict ( 0xFFFFFFFF )
- ,m_nTopPos ( 0 )
- ,m_bModifiedSuggestions ( false )
- ,m_bModifiedOriginal ( false )
+ HangulHanjaEditDictDialog::HangulHanjaEditDictDialog(weld::Window* pParent, HHDictList& _rDictList, sal_uInt32 nSelDict)
+ : GenericDialogController(pParent, "cui/ui/hangulhanjaeditdictdialog.ui", "HangulHanjaEditDictDialog")
+ , m_aEditHintText ( CuiResId(RID_SVXSTR_EDITHINT) )
+ , m_rDictList ( _rDictList )
+ , m_nCurrentDict ( 0xFFFFFFFF )
+ , m_nTopPos ( 0 )
+ , m_bModifiedSuggestions ( false )
+ , m_bModifiedOriginal ( false )
+ , m_xBookLB(m_xBuilder->weld_combo_box("book"))
+ , m_xOriginalLB(m_xBuilder->weld_combo_box("original"))
+ , m_xEdit1(new SuggestionEdit(m_xBuilder->weld_entry("edit1"), this))
+ , m_xEdit2(new SuggestionEdit(m_xBuilder->weld_entry("edit2"), this))
+ , m_xEdit3(new SuggestionEdit(m_xBuilder->weld_entry("edit3"), this))
+ , m_xEdit4(new SuggestionEdit(m_xBuilder->weld_entry("edit4"), this))
+ , m_xContents(m_xBuilder->weld_widget("box"))
+ , m_xScrollSB(m_xBuilder->weld_scrolled_window("scrollbar"))
+ , m_xNewPB(m_xBuilder->weld_button("new"))
+ , m_xDeletePB(m_xBuilder->weld_button("delete"))
{
- get( m_aBookLB, "book" );
- get( m_aOriginalLB, "original" );
- get( m_aNewPB, "new" );
- get( m_aDeletePB, "delete" );
- get( m_aScrollSB, "scrollbar" );
- get( m_aEdit1, "edit1" );
- get( m_aEdit2, "edit2" );
- get( m_aEdit3, "edit3" );
- get( m_aEdit4, "edit4" );
+ m_xScrollSB->set_user_managed_scrolling();
- m_aEdit1->init( m_aScrollSB, nullptr, m_aEdit2 );
- m_aEdit2->init( m_aScrollSB, m_aEdit1, m_aEdit3 );
- m_aEdit3->init( m_aScrollSB, m_aEdit2, m_aEdit4 );
- m_aEdit4->init( m_aScrollSB, m_aEdit3, nullptr );
+ Size aSize(m_xContents->get_preferred_size());
+ m_xScrollSB->set_size_request(-1, aSize.Height());
- m_aOriginalLB->SetModifyHdl( LINK( this, HangulHanjaEditDictDialog, OriginalModifyHdl ) );
+ m_xEdit1->init( m_xScrollSB.get(), nullptr, m_xEdit2.get() );
+ m_xEdit2->init( m_xScrollSB.get(), m_xEdit1.get(), m_xEdit3.get() );
+ m_xEdit3->init( m_xScrollSB.get(), m_xEdit2.get(), m_xEdit4.get() );
+ m_xEdit4->init( m_xScrollSB.get(), m_xEdit3.get(), nullptr );
- m_aNewPB->SetClickHdl( LINK( this, HangulHanjaEditDictDialog, NewPBPushHdl ) );
- m_aNewPB->Enable( false );
+ m_xOriginalLB->connect_changed( LINK( this, HangulHanjaEditDictDialog, OriginalModifyHdl ) );
- m_aDeletePB->SetClickHdl( LINK( this, HangulHanjaEditDictDialog, DeletePBPushHdl ) );
- m_aDeletePB->Enable( false );
+ m_xNewPB->connect_clicked( LINK( this, HangulHanjaEditDictDialog, NewPBPushHdl ) );
+ m_xNewPB->set_sensitive( false );
+
+ m_xDeletePB->connect_clicked( LINK( this, HangulHanjaEditDictDialog, DeletePBPushHdl ) );
+ m_xDeletePB->set_sensitive( false );
static_assert(MAXNUM_SUGGESTIONS >= 5, "number of suggestions should not under-run the value of 5");
- Link<ScrollBar*,void> aScrLk( LINK( this, HangulHanjaEditDictDialog, ScrollHdl ) );
- m_aScrollSB->SetScrollHdl( aScrLk );
- m_aScrollSB->SetEndScrollHdl( aScrLk );
- m_aScrollSB->SetRangeMin( 0 );
- m_aScrollSB->SetRangeMax( MAXNUM_SUGGESTIONS );
- m_aScrollSB->SetPageSize( 4 ); // because we have 4 edits / page
- m_aScrollSB->SetVisibleSize( 4 );
+ // 4 here, because we have 4 edits / page
+ m_xScrollSB->vadjustment_configure(0, 0, MAXNUM_SUGGESTIONS, 1, 4, 4);
+ m_xScrollSB->connect_vadjustment_changed(LINK(this, HangulHanjaEditDictDialog, ScrollHdl));
- m_aEdit1->SetModifyHdl( LINK( this, HangulHanjaEditDictDialog, EditModifyHdl1 ) );
- m_aEdit2->SetModifyHdl( LINK( this, HangulHanjaEditDictDialog, EditModifyHdl2 ) );
- m_aEdit3->SetModifyHdl( LINK( this, HangulHanjaEditDictDialog, EditModifyHdl3 ) );
- m_aEdit4->SetModifyHdl( LINK( this, HangulHanjaEditDictDialog, EditModifyHdl4 ) );
+ m_xEdit1->connect_changed( LINK( this, HangulHanjaEditDictDialog, EditModifyHdl1 ) );
+ m_xEdit2->connect_changed( LINK( this, HangulHanjaEditDictDialog, EditModifyHdl2 ) );
+ m_xEdit3->connect_changed( LINK( this, HangulHanjaEditDictDialog, EditModifyHdl3 ) );
+ m_xEdit4->connect_changed( LINK( this, HangulHanjaEditDictDialog, EditModifyHdl4 ) );
- m_aBookLB->SetSelectHdl( LINK( this, HangulHanjaEditDictDialog, BookLBSelectHdl ) );
+ m_xBookLB->connect_changed( LINK( this, HangulHanjaEditDictDialog, BookLBSelectHdl ) );
sal_uInt32 nDictCnt = m_rDictList.size();
for( sal_uInt32 n = 0 ; n < nDictCnt ; ++n )
{
@@ -1745,46 +1725,27 @@ namespace svx
OUString aName;
if( xDic.is() )
aName = xDic->getName();
- m_aBookLB->InsertEntry( aName );
+ m_xBookLB->append_text( aName );
}
- m_aBookLB->SelectEntryPos( sal_uInt16( _nSelDict ) );
+ m_xBookLB->set_active(nSelDict);
- InitEditDictDialog( _nSelDict );
+ InitEditDictDialog(nSelDict);
}
HangulHanjaEditDictDialog::~HangulHanjaEditDictDialog()
{
- disposeOnce();
- }
-
- void HangulHanjaEditDictDialog::dispose()
- {
- m_pSuggestions.reset();
- m_aBookLB.clear();
- m_aOriginalLB.clear();
- m_aEdit1.clear();
- m_aEdit2.clear();
- m_aEdit3.clear();
- m_aEdit4.clear();
- m_aScrollSB.clear();
- m_aNewPB.clear();
- m_aDeletePB.clear();
- ModalDialog::dispose();
}
void HangulHanjaEditDictDialog::UpdateScrollbar()
{
- sal_uInt16 nPos = sal_uInt16( m_aScrollSB->GetThumbPos() );
+ sal_uInt16 nPos = m_xScrollSB->vadjustment_get_value();
m_nTopPos = nPos;
- SetEditText( *m_aEdit1, nPos++ );
- SetEditText( *m_aEdit2, nPos++ );
- SetEditText( *m_aEdit3, nPos++ );
- SetEditText( *m_aEdit4, nPos );
+ SetEditText( *m_xEdit1, nPos++ );
+ SetEditText( *m_xEdit2, nPos++ );
+ SetEditText( *m_xEdit3, nPos++ );
+ SetEditText( *m_xEdit4, nPos );
}
-
-
}
-
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/cui/source/inc/hangulhanjadlg.hxx b/cui/source/inc/hangulhanjadlg.hxx
index 92fceadfc5ad..390e8663433e 100644
--- a/cui/source/inc/hangulhanjadlg.hxx
+++ b/cui/source/inc/hangulhanjadlg.hxx
@@ -244,26 +244,31 @@ namespace svx
};
class SuggestionList;
+ class HangulHanjaEditDictDialog;
- class SuggestionEdit : public Edit
+ class SuggestionEdit
{
private:
- VclPtr<SuggestionEdit> m_pPrev;
- VclPtr<SuggestionEdit> m_pNext;
- VclPtr<ScrollBar> m_pScrollBar;
+ HangulHanjaEditDictDialog* m_pParent;
+ SuggestionEdit* m_pPrev;
+ SuggestionEdit* m_pNext;
+ weld::ScrolledWindow* m_pScrollBar;
+ std::unique_ptr<weld::Entry> m_xEntry;
bool ShouldScroll( bool _bUp ) const;
void DoJump( bool _bUp );
public:
- SuggestionEdit( vcl::Window* pParent, WinBits nBits );
- virtual ~SuggestionEdit() override;
- virtual void dispose() override;
- virtual bool PreNotify( NotifyEvent& rNEvt ) override;
- void init( ScrollBar* pScrollBar, SuggestionEdit* pPrev, SuggestionEdit* pNext);
+ SuggestionEdit(std::unique_ptr<weld::Entry> xEntry, HangulHanjaEditDictDialog* pParent);
+ DECL_LINK(KeyInputHdl, const KeyEvent&, bool);
+ void init(weld::ScrolledWindow* pScrollBar, SuggestionEdit* pPrev, SuggestionEdit* pNext);
+
+ void grab_focus() { m_xEntry->grab_focus(); }
+ OUString get_text() const { return m_xEntry->get_text(); }
+ void set_text(const OUString& rText) { m_xEntry->set_text(rText); }
+ void connect_changed(const Link<weld::Entry&, void>& rLink) { m_xEntry->connect_changed(rLink); }
};
-
- class HangulHanjaEditDictDialog : public ModalDialog
+ class HangulHanjaEditDictDialog : public weld::GenericDialogController
{
private:
const OUString m_aEditHintText;
@@ -273,53 +278,50 @@ namespace svx
OUString m_aOriginal;
std::unique_ptr<SuggestionList> m_pSuggestions;
- VclPtr<ListBox> m_aBookLB;
- VclPtr<ComboBox> m_aOriginalLB;
- VclPtr<SuggestionEdit> m_aEdit1;
- VclPtr<SuggestionEdit> m_aEdit2;
- VclPtr<SuggestionEdit> m_aEdit3;
- VclPtr<SuggestionEdit> m_aEdit4;
- VclPtr<ScrollBar> m_aScrollSB;
- VclPtr<PushButton> m_aNewPB;
- VclPtr<PushButton> m_aDeletePB;
-
sal_uInt16 m_nTopPos;
bool m_bModifiedSuggestions;
bool m_bModifiedOriginal;
- DECL_LINK( OriginalModifyHdl, Edit&, void );
- DECL_LINK( ScrollHdl, ScrollBar*, void );
- DECL_LINK( EditModifyHdl1, Edit&, void );
- DECL_LINK( EditModifyHdl2, Edit&, void );
- DECL_LINK( EditModifyHdl3, Edit&, void );
- DECL_LINK( EditModifyHdl4, Edit&, void );
-
- DECL_LINK( BookLBSelectHdl, ListBox&, void );
- DECL_LINK( NewPBPushHdl, Button*, void );
- DECL_LINK( DeletePBPushHdl, Button*, void );
-
- void InitEditDictDialog( sal_uInt32 _nSelDict );
+ std::unique_ptr<weld::ComboBox> m_xBookLB;
+ std::unique_ptr<weld::ComboBox> m_xOriginalLB;
+ std::unique_ptr<SuggestionEdit> m_xEdit1;
+ std::unique_ptr<SuggestionEdit> m_xEdit2;
+ std::unique_ptr<SuggestionEdit> m_xEdit3;
+ std::unique_ptr<SuggestionEdit> m_xEdit4;
+ std::unique_ptr<weld::Widget> m_xContents;
+ std::unique_ptr<weld::ScrolledWindow> m_xScrollSB;
+ std::unique_ptr<weld::Button> m_xNewPB;
+ std::unique_ptr<weld::Button> m_xDeletePB;
+
+ DECL_LINK( OriginalModifyHdl, weld::ComboBox&, void );
+ DECL_LINK( ScrollHdl, weld::ScrolledWindow&, void );
+ DECL_LINK( EditModifyHdl1, weld::Entry&, void );
+ DECL_LINK( EditModifyHdl2, weld::Entry&, void );
+ DECL_LINK( EditModifyHdl3, weld::Entry&, void );
+ DECL_LINK( EditModifyHdl4, weld::Entry&, void );
+
+ DECL_LINK( BookLBSelectHdl, weld::ComboBox&, void );
+ DECL_LINK( NewPBPushHdl, weld::Button&, void );
+ DECL_LINK( DeletePBPushHdl, weld::Button&, void );
+
+ void InitEditDictDialog(sal_uInt32 nSelDict);
void UpdateOriginalLB();
void UpdateSuggestions();
void UpdateButtonStates();
- void SetEditText( Edit& _rEdit, sal_uInt16 _nEntryNum );
- void EditModify( Edit const * _pEdit, sal_uInt8 _nEntryOffset );
+ void SetEditText( SuggestionEdit& rEdit, sal_uInt16 nEntryNum );
+ void EditModify( const weld::Entry* pEdit, sal_uInt8 nEntryOffset );
bool DeleteEntryFromDictionary( const css::uno::Reference< css::linguistic2::XConversionDictionary >& xDict );
public:
- HangulHanjaEditDictDialog( vcl::Window* _pParent, HHDictList& _rDictList, sal_uInt32 _nSelDict );
- virtual ~HangulHanjaEditDictDialog() override;
- virtual void dispose() override;
+ HangulHanjaEditDictDialog(weld::Window* pParent, HHDictList& rDictList, sal_uInt32 nSelDict);
+ virtual ~HangulHanjaEditDictDialog() override;
void UpdateScrollbar();
};
-
-
}
-
#endif // SVX_HANGUL_HANJA_HXX
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/cui/uiconfig/ui/hangulhanjaeditdictdialog.ui b/cui/uiconfig/ui/hangulhanjaeditdictdialog.ui
index dda3a5219479..9d076b3e3943 100644
--- a/cui/uiconfig/ui/hangulhanjaeditdictdialog.ui
+++ b/cui/uiconfig/ui/hangulhanjaeditdictdialog.ui
@@ -1,13 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Generated with glade 3.18.3 -->
+<!-- Generated with glade 3.22.1 -->
<interface domain="cui">
<requires lib="gtk+" version="3.18"/>
- <requires lib="LibreOffice" version="1.0"/>
<object class="GtkDialog" id="HangulHanjaEditDictDialog">
<property name="can_focus">False</property>
<property name="border_width">6</property>
<property name="title" translatable="yes" context="hangulhanjaeditdictdialog|HangulHanjaEditDictDialog">Edit Custom Dictionary</property>
+ <property name="modal">True</property>
+ <property name="default_width">0</property>
+ <property name="default_height">0</property>
<property name="type_hint">dialog</property>
+ <child>
+ <placeholder/>
+ </child>
<child internal-child="vbox">
<object class="GtkBox" id="dialog-vbox1">
<property name="can_focus">False</property>
@@ -85,7 +90,7 @@
<property name="can_focus">False</property>
<property name="spacing">12</property>
<child>
- <object class="GtkComboBox" id="book">
+ <object class="GtkComboBoxText" id="book">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
@@ -103,10 +108,10 @@
<object class="GtkLabel" id="label4">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="xalign">0</property>
<property name="label" translatable="yes" context="hangulhanjaeditdictdialog|label4">Book</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">book</property>
+ <property name="xalign">0</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
@@ -138,7 +143,7 @@
<property name="row_spacing">6</property>
<property name="column_spacing">12</property>
<child>
- <object class="GtkComboBox" id="original">
+ <object class="GtkComboBoxText" id="original">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="valign">start</property>
@@ -147,7 +152,6 @@
<child internal-child="entry">
<object class="GtkEntry" id="combobox-entry">
<property name="can_focus">True</property>
- <property name="xalign">0.5</property>
<property name="shadow_type">none</property>
<property name="caps_lock_warning">False</property>
</object>
@@ -209,9 +213,9 @@
<object class="GtkLabel" id="label2">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="xalign">0</property>
<property name="label" translatable="yes" context="hangulhanjaeditdictdialog|label2">Original</property>
<property name="use_underline">True</property>
+ <property name="xalign">0</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
@@ -228,6 +232,7 @@
<object class="GtkFrame" id="frame1">
<property name="visible">True</property>
<property name="can_focus">False</property>
+ <property name="hexpand">True</property>
<property name="label_xalign">0</property>
<property name="shadow_type">none</property>
<child>
@@ -237,82 +242,77 @@
<property name="top_padding">6</property>
<property name="left_padding">12</property>
<child>
- <object class="GtkBox" id="box3">
+ <object class="GtkScrolledWindow" id="scrollbar">
<property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="spacing">6</property>
+ <property name="can_focus">True</property>
+ <property name="valign">start</property>
+ <property name="hscrollbar_policy">never</property>
+ <property name="vscrollbar_policy">always</property>
+ <property name="shadow_type">in</property>
<child>
- <object class="GtkBox" id="box4">
+ <object class="GtkViewport">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="orientation">vertical</property>
- <child>
- <object class="cuilo-SuggestionEdit" id="edit1">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="hexpand">True</property>
- <property name="width_chars">40</property>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="cuilo-SuggestionEdit" id="edit2">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="hexpand">True</property>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <object class="cuilo-SuggestionEdit" id="edit3">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="hexpand">True</property>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">2</property>
- </packing>
- </child>
<child>
- <object class="cuilo-SuggestionEdit" id="edit4">
+ <object class="GtkBox" id="box">
<property name="visible">True</property>
- <property name="can_focus">True</property>
+ <property name="can_focus">False</property>
<property name="hexpand">True</property>
+ <property name="border_width">3</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkEntry" id="edit1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hexpand">True</property>
+ <property name="width_chars">40</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="edit2">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hexpand">True</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="edit3">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hexpand">True</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="edit4">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hexpand">True</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
</object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">3</property>
- </packing>
</child>
</object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkScrollbar" id="scrollbar">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="orientation">vertical</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
</child>
</object>
</child>
@@ -322,10 +322,10 @@
<object class="GtkLabel" id="label3">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="xalign">0</property>
<property name="label" translatable="yes" context="hangulhanjaeditdictdialog|label3">Suggestions</property>
<property name="use_underline">True</property>
<property name="ellipsize">end</property>
+ <property name="xalign">0</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
@@ -348,6 +348,7 @@
</object>
</child>
<action-widgets>
+ <action-widget response="-7">close</action-widget>
<action-widget response="-11">help</action-widget>
</action-widgets>
</object>
diff --git a/extras/source/glade/libreoffice-catalog.xml.in b/extras/source/glade/libreoffice-catalog.xml.in
index 1d98ea2862bf..784b173d5e33 100644
--- a/extras/source/glade/libreoffice-catalog.xml.in
+++ b/extras/source/glade/libreoffice-catalog.xml.in
@@ -521,9 +521,6 @@
generic-name="DataTreeListBox" parent="GtkTreeView"
icon-name="widget-gtk-treeview"/>
- <glade-widget-class title="Suggestion Edit" name="cuilo-SuggestionEdit"
- generic-name="SuggestionEdit" parent="GtkEntry"
- icon-name="widget-gtk-textentry"/>
<glade-widget-class title="Suggestion Display" name="cuilo-SuggestionDisplay"
generic-name="SuggestionDisplay" parent="GtkTextView"
icon-name="widget-gtk-textview"/>
diff --git a/include/vcl/weld.hxx b/include/vcl/weld.hxx
index 868a444dcf87..4fb71ca77bf1 100644
--- a/include/vcl/weld.hxx
+++ b/include/vcl/weld.hxx
@@ -217,6 +217,8 @@ public:
virtual int vadjustment_get_upper() const = 0;
virtual void vadjustment_set_upper(int upper) = 0;
virtual int vadjustment_get_page_size() const = 0;
+ virtual int vadjustment_get_lower() const = 0;
+ virtual void vadjustment_set_lower(int upper) = 0;
virtual void set_vpolicy(VclPolicyType eVPolicy) = 0;
virtual VclPolicyType get_vpolicy() const = 0;
void connect_vadjustment_changed(const Link<ScrolledWindow&, void>& rLink)
diff --git a/solenv/bin/native-code.py b/solenv/bin/native-code.py
index c95a0a48d51a..be38032d6d90 100755
--- a/solenv/bin/native-code.py
+++ b/solenv/bin/native-code.py
@@ -502,7 +502,6 @@ custom_widgets = [
'StatusBar',
'StructListBox',
'SuggestionDisplay',
- 'SuggestionEdit',
'SvSimpleTableContainer',
'SvTreeListBox',
'SvtFileView',
diff --git a/solenv/sanitizers/ui/cui.suppr b/solenv/sanitizers/ui/cui.suppr
index 2e83d8eed13e..c472d257df2a 100644
--- a/solenv/sanitizers/ui/cui.suppr
+++ b/solenv/sanitizers/ui/cui.suppr
@@ -237,6 +237,10 @@ cui/uiconfig/ui/hangulhanjaconversiondialog.ui://GtkLabel[@id='label4'] orphan-l
cui/uiconfig/ui/hangulhanjaconversiondialog.ui://cuilo-SuggestionDisplay[@id='suggestions:border'] no-labelled-by
cui/uiconfig/ui/hangulhanjaconversiondialog.ui://GtkLabel[@id='label5'] orphan-label
cui/uiconfig/ui/hangulhanjaconversiondialog.ui://GtkLabel[@id='label6'] orphan-label
+cui/uiconfig/ui/hangulhanjaeditdictdialog.ui://GtkEntry[@id='edit1'] no-labelled-by
+cui/uiconfig/ui/hangulhanjaeditdictdialog.ui://GtkEntry[@id='edit2'] no-labelled-by
+cui/uiconfig/ui/hangulhanjaeditdictdialog.ui://GtkEntry[@id='edit3'] no-labelled-by
+cui/uiconfig/ui/hangulhanjaeditdictdialog.ui://GtkEntry[@id='edit4'] no-labelled-by
cui/uiconfig/ui/hatchpage.ui://GtkLabel[@id='angleft'] orphan-label
cui/uiconfig/ui/hatchpage.ui://GtkScale[@id='angleslider'] no-labelled-by
cui/uiconfig/ui/hatchpage.ui://GtkSpinButton[@id='anglemtr'] no-labelled-by
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx
index 7bbda76e9dfb..55a6e36077c3 100644
--- a/vcl/source/app/salvtables.cxx
+++ b/vcl/source/app/salvtables.cxx
@@ -1180,6 +1180,18 @@ public:
rVertScrollBar.SetRangeMax(upper);
}
+ virtual int vadjustment_get_lower() const override
+ {
+ ScrollBar& rVertScrollBar = m_xScrolledWindow->getVertScrollBar();
+ return rVertScrollBar.GetRangeMin();
+ }
+
+ virtual void vadjustment_set_lower(int lower) override
+ {
+ ScrollBar& rVertScrollBar = m_xScrolledWindow->getVertScrollBar();
+ rVertScrollBar.SetRangeMin(lower);
+ }
+
virtual int vadjustment_get_page_size() const override
{
ScrollBar& rVertScrollBar = m_xScrolledWindow->getVertScrollBar();
diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx
index 3afb2e260b28..baf0d649cc9a 100644
--- a/vcl/unx/gtk3/gtk3gtkinst.cxx
+++ b/vcl/unx/gtk3/gtk3gtkinst.cxx
@@ -3051,6 +3051,18 @@ public:
enable_notify_events();
}
+ virtual int vadjustment_get_lower() const override
+ {
+ return gtk_adjustment_get_lower(m_pVAdjustment);
+ }
+
+ virtual void vadjustment_set_lower(int lower) override
+ {
+ disable_notify_events();
+ gtk_adjustment_set_lower(m_pVAdjustment, lower);
+ enable_notify_events();
+ }
+
virtual int vadjustment_get_page_size() const override
{
return gtk_adjustment_get_page_size(m_pVAdjustment);
commit 3901a75e4acf15dcb711b7d71a1cc5afd3933984
Author: Caolán McNamara <caolanm at redhat.com>
AuthorDate: Sat Feb 16 21:57:43 2019 +0000
Commit: Caolán McNamara <caolanm at redhat.com>
CommitDate: Sun Feb 17 16:45:59 2019 +0100
use Application::AddKeyListener to be able to mark key events as handled
Change-Id: I1f9ced535bcd12569c355c332652babf5740434c
Reviewed-on: https://gerrit.libreoffice.org/67931
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm at redhat.com>
Tested-by: Caolán McNamara <caolanm at redhat.com>
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx
index c24d6f5ab745..7bbda76e9dfb 100644
--- a/vcl/source/app/salvtables.cxx
+++ b/vcl/source/app/salvtables.cxx
@@ -236,9 +236,11 @@ private:
VclPtr<vcl::Window> m_xWidget;
DECL_LINK(EventListener, VclWindowEvent&, void);
+ DECL_LINK(KeyEventListener, VclWindowEvent&, bool);
const bool m_bTakeOwnership;
bool m_bEventListener;
+ bool m_bKeyEventListener;
int m_nBlockNotify;
void ensure_event_listener()
@@ -250,14 +252,28 @@ private:
}
}
+ // we want the ability to mark key events as handled, so use this variant
+ // for those, we get all keystrokes in this case, so we will need to filter
+ // them later
+ void ensure_key_listener()
+ {
+ if (!m_bKeyEventListener)
+ {
+ Application::AddKeyListener(LINK(this, SalInstanceWidget, KeyEventListener));
+ m_bKeyEventListener = true;
+ }
+ }
+
protected:
virtual void HandleEventListener(VclWindowEvent& rEvent);
+ virtual bool HandleKeyEventListener(VclWindowEvent& rEvent);
public:
SalInstanceWidget(vcl::Window* pWidget, bool bTakeOwnership)
: m_xWidget(pWidget)
, m_bTakeOwnership(bTakeOwnership)
, m_bEventListener(false)
+ , m_bKeyEventListener(false)
, m_nBlockNotify(0)
{
}
@@ -475,13 +491,13 @@ public:
virtual void connect_key_press(const Link<const KeyEvent&, bool>& rLink) override
{
- ensure_event_listener();
+ ensure_key_listener();
weld::Widget::connect_key_press(rLink);
}
virtual void connect_key_release(const Link<const KeyEvent&, bool>& rLink) override
{
- ensure_event_listener();
+ ensure_key_listener();
weld::Widget::connect_key_release(rLink);
}
@@ -534,6 +550,8 @@ public:
virtual ~SalInstanceWidget() override
{
+ if (m_bKeyEventListener)
+ Application::RemoveKeyListener(LINK(this, SalInstanceWidget, KeyEventListener));
if (m_bEventListener)
m_xWidget->RemoveEventListener(LINK(this, SalInstanceWidget, EventListener));
if (m_bTakeOwnership)
@@ -574,23 +592,37 @@ void SalInstanceWidget::HandleEventListener(VclWindowEvent& rEvent)
m_aFocusOutHdl.Call(*this);
else if (rEvent.GetId() == VclEventId::WindowResize)
m_aSizeAllocateHdl.Call(m_xWidget->GetSizePixel());
- else if (rEvent.GetId() == VclEventId::WindowKeyInput)
+}
+
+bool SalInstanceWidget::HandleKeyEventListener(VclWindowEvent& rEvent)
+{
+ // we get all key events here, ignore them unless we have focus
+ if (!m_xWidget->HasFocus())
+ return false;
+ if (rEvent.GetId() == VclEventId::WindowKeyInput)
{
const KeyEvent* pKeyEvent = static_cast<const KeyEvent*>(rEvent.GetData());
- m_aKeyPressHdl.Call(*pKeyEvent);
+ return m_aKeyPressHdl.Call(*pKeyEvent);
}
else if (rEvent.GetId() == VclEventId::WindowKeyUp)
{
const KeyEvent* pKeyEvent = static_cast<const KeyEvent*>(rEvent.GetData());
- m_aKeyReleaseHdl.Call(*pKeyEvent);
+ return m_aKeyReleaseHdl.Call(*pKeyEvent);
}
+ return false;
}
+
IMPL_LINK(SalInstanceWidget, EventListener, VclWindowEvent&, rEvent, void)
{
HandleEventListener(rEvent);
}
+IMPL_LINK(SalInstanceWidget, KeyEventListener, VclWindowEvent&, rEvent, bool)
+{
+ return HandleKeyEventListener(rEvent);
+}
+
namespace
{
Image createImage(const OUString& rImage)
@@ -3147,15 +3179,18 @@ private:
// in VclDrawingArea
virtual void HandleEventListener(VclWindowEvent& rEvent) override
{
- if (rEvent.GetId() == VclEventId::WindowResize ||
- rEvent.GetId() == VclEventId::WindowKeyInput ||
- rEvent.GetId() == VclEventId::WindowKeyUp)
+ if (rEvent.GetId() == VclEventId::WindowResize)
{
return;
}
SalInstanceWidget::HandleEventListener(rEvent);
}
+ virtual bool HandleKeyEventListener(VclWindowEvent& /*rEvent*/) override
+ {
+ return false;
+ }
+
public:
SalInstanceDrawingArea(VclDrawingArea* pDrawingArea, const a11yref& rAlly,
FactoryFunction pUITestFactoryFunction, void* pUserData, bool bTakeOwnership)
More information about the Libreoffice-commits
mailing list