2012-05-09 23 views
5

GtkEntry widgets koleksiyonumuz var, bunlardan bazıları düzenlenebilir ve odaklanabilir ve bazıları değil. Düzenle-> Kopyala menü öğesini uygulamak için şu anda seçili olan metinlerin hangileri olduğunu öğrenmek istiyorum. Bunu, gtk_editable_get_selection_bounds gerçek dönüşüne kadar tüm widget'ları tekrarlamaktan başka bir yolu var mı?hangi gtk parçacığının mevcut seçimi olduğunu öğren

Şu anda bu sorunu, gtk_clipboard_get(GDK_SELECTION_PRIMARY) numaralı telefonu arayarak ancak dokümanların söylediklerinden portatif değil (ve aynı zamanda geçerli ekranın herhangi bir yerinde seçili metni yalnızca benim uygulamamdan değil) seçiyorum.

+0

Ne yazık ki bir pencere öğesi bir seçim istediğinde bir sinyal gibi görünmüyor, ancak her giriş için aynı "seçim-alma" sinyal işleyicisini kullanabiliyor ve daha sonra bir seçim dönüşümü gerçekleştireceksiniz Seçim ile giriş için (varsa). – ergosys

+0

ergosys: Sahte seçim dönüşümü ile ne demek istiyorsun? –

+0

Verileri almak istemeyen bir seçim dönüşümü isteğinde bulunun. Yani gtk_selection_convert() işlevini çağırın, ancak "seçme-alma" sinyal işleyicisine sahip olmayın. – ergosys

cevap

1

gtk_window_get_focus()'u denediniz mi? Kullanıcılar sıklıkla girişlerle etkileşime girer, bu yüzden sizin için işe yarayabilir. Belgeler, "mevcut odaklanmış pencere parçasını pencerenin içine aldığını" söylüyor. Kendinize bakın here. Ardından, alınan widget'ın girişlerinizden biri olup olmadığını karşılaştırın.

Odaklanmış girdiyi aldıktan sonra, belki de metnini gtk_entry_get_text() kullanarak almak istiyorsunuz, ancak girişteki tüm metni alacaksınız. Bu, amaçlarınıza uymuyorsa, çözüm şu anda seçili içeriğin içeriğini düzenlenebilir olan (tabii ki, düzenlenebilir olarak düzenlenebilir) kopyalayan ve panoya koyan gtk_editable_copy_clipboard() kullanıyor olabilir. Daha sonra geçerliyse, gtk_editable_paste_clipboard()'u kullanarak kopyalananı yapıştırın.

+0

'g_signal_emit_by_name (giriş," copy-clipboard ", NULL)' da kopyalama için çalışır. – ptomato

+0

, denediğim ilk şey buydu, ama işe yaramadı, çünkü odaklanmış giriş, metin seçimiyle zorunlu olarak girilmediğinden –

İlgili konular