[gtkmm] Beim Klicken in ein Gtk::Entry Control alles markieren



  • Hali halo 😉 ,

    weiß jemand, wie ich es anstellen muss, dass, bei einem Klick in ein Gtk::Entry-Steuerelement, der gesamte Text markiert wird? Alles markieren kann man ja mit:

    m_ebxEdit1.select_region(0, -1);
    

    Allerdings bekomme ich irgendwie keinen passenden Signal-Handler installiert; könnte mir da jemand helfen?

    Also damit klappt es nicht:

    m_ebxEdit1.signal_activate().connect(sigc::bind<ControlID,Gtk::Entry*>
                 (sigc::mem_fun(*this, &CMainWnd::OnEditBoxFocus), EBX_EDIT1, &m_ebxEdit1));
    

    Die Methode "OnEditBoxFocus" wird nämlich nicht aufgerufen, wenn man in das Edit klickt 🙄 .

    Schonmal thx 🙂 !





  • Hi, erstmal danke für deine Antwort!

    Also leider funktioniert das nicht, hier mal mein Code(teil):
    Der Header:

    class CMainWnd : public Gtk::Window
    {
    	private:
    		enum ControlID
    		{
    			EBX_DEMO
    		};
    
    		// ...
    
    		Gtk::Entry m_ebxDemo;
    
    		bool OnEditBoxFocus(Gtk::DirectionType DirType, ControlID Id, Gtk::Entry* pEbx);
    	public:
    		CMainWnd(void);
    		~CMainWnd(void){}
    };
    

    Die Quellcodedatei:

    CMainWnd::CMainWnd(void)
      : m_tbCtrls(4, 3, true)
    {
    	// Set the default size of the main window:
    	set_default_size(400, 300);
    
    	m_ebxDemo.signal_focus().connect(sigc::bind<ControlID,Gtk::Entry*>(sigc::mem_fun(*this, &CMainWnd::OnEditBoxFocus), EBX_DEMO, &m_ebxDemo));
    	// ...
    	m_tbCtrls.attach(m_ebxDemo, 0, 1, 3, 4);
    
    	// Add the Table-Box to the parent window:
    	add(m_tbCtrls);
    	// Show all children controls on the main window:
    	show_all_children();
    }
    
    bool CMainWnd::OnEditBoxFocus(Gtk::DirectionType DirType, ControlID Id, Gtk::Entry* pEbx)
    {
    	Gtk::MessageDialog MsgDlg("Control focused: \"" + (!pEbx ? "n/a" : pEbx->get_text()) + "\"!");
    	MsgDlg.run();
    
    	return (false);
    }
    

    Eigentlich bräuchte ich das Ganze auch für ein Gtk::TextView Steuerelement...da gibt es allerdings die Methode select_region nicht 🙄 . Die Message-Box (Gtk::MessageDialog) wird nie aufgerufen 😮 .

    Nochmals vielen Dank!

    Grüße Q 🙂



  • *push* 🙄 - Hilfe?



  • Ich werd mir das mal bei Gelegenheit anschauen und morgen posten 😉



  • Hatte die letzten Tage wenig Zeit, aber so wie es aussieht, macht gtkmm wieder blödsinn 🙄

    Habe alles erdenkliche probiert und keine Möglichkeit gefunden bei Klick in ein Entry/TextView auf den Klick zu reagieren.

    Zum markieren: grab_focus() reicht aus 😉



  • Okay, dank Dir!

    Hm das heßt, das Framework kann sowas nicht 😮 ?...oha son scheiß, war vllt. doch die falsche Wahl, dachte gtkmm hätte's drauf, okay trotzdem danke an alle!



  • Wenn ich wieder Zeit/Lust finde, werde ich mir das nochmal anschauen.
    Frag doch mal in der gtkmm-Mailingliste bzw im NabbleBoard, da die Post dort zur Mailingliste gehen: http://www.nabble.com/Gtkmm-f1344.html


Anmelden zum Antworten