Shortcut keys für das Menü setzen

Für ein Windows Forms Menü wollte ich einen Shortcut key (für die MFC kundigen auch Accelerator genannt) setzen. Das funktioniert im Normalfall auch immer ohne Probleme. Nur bei den Tasten Keys.NumPad0Keys.NumPad9 funktioniert das nicht.

Auch eine manuelle Zuweisung:

topToolStripMenuItem.ShortcutKeys = Keys.NumPad5;

schlägt mit einer Exception fehl. Der Trick hier ist es die nummerischen Tasten des Numpad immer mit Strg oder Alt zu benutzen. So ist es ohne Probleme möglich dem Menüpunkt den Shortcut key Alt + Numpad 5 zuzuweisen. Ich tippe mal das hängt bei diesen Tasten mit der Doppelbelegung (Num aus/an) zusammen.

KDE 4 Probleme

Nach einem unsanften Shutdown spielte mein KDE 4 doch leicht verrückt. Es machte Sachen die es im Normalfall nicht tun sollte, wie z.B. fehlende Symbole und unregelmäßige aber häufige Abstürze. Da ich keine Lust auf eine lange Fehlersuche hatte, wählte ich die brachiale Methode und löschte den ~/.kde Ordner. Daraufhin musste ich zwar einige Dinge neu einstellen, das System lief aber wieder prima :)

Wikis und die CC BY-NC-ND

Eigentlich sollte es in diesem Artikel um eine Garten Wiki gehen welche unter http://www.gardora.at zu finden ist. Die Wiki steht unter der Lizenz Creative Commons BY-NC-ND welche besagt das das betreffende Material nicht kommerziell, unter der Bedingung der Namensnennung benutzt werden darf sowie der letzten Bedingung das keine Derivate erzeugt werden dürfen.

Das Problem ist dabei allerdings das sobald ich etwas in der Wiki schreibe ich ein Derivat erzeuge. Im Umkehrschluss funktioniert diese Lizenz nicht wirklich fürs Wikis. Doch ist es erstaunlich wie viele Wikis sich finden, welche genau dies tun…

Der Internet Explorer und Comboboxen

AJAX ist schon eine feine Sache. Wenn die Daten dann zurückkommen und man damit eine Combobox füllen möchte so sieht das meist so aus:

function showData() {
  if (xmlHttp.readyState == 4 || xmlHttp.readyState == "complete") {
    document.getElementById("combobox").innerHTML = xmlHttp.responseText;
  }
}

Es gibt hierbei bloß ein Problem, der Internet Explorer mag es einfach nicht. Während dieser Code mit Chrome, Firefox, Opera et cetera wunderbar funktioniert, gibt es beim Internet Explorer ein Problem. Er hat Probleme mit dem innerHTML und füllt es einfach nicht.

Damit man nun nicht seinen ganzen Code umschreiben muss gibt es auf http://www.fpruefer.de/blog/archives/innerHTML-und-die-Select-Box-2009-08-04.html eine interessante Funktion welche sich das outerHTML nimmt (welches der Internet Explorer unterstützt) und dort die <select> Tags ausspart und nur alles zwischen diesen Tags ändert. Die Funktion welche die Arbeit dabei erledigt sieht dabei so aus:

function fillSelect(pList, pOptionHTML)
{
  if (pList) {
    if (pList.outerHTML) {
      var begin = pList.outerHTML.match(/(<select .*?>)/i);
      var end   = pList.outerHTML.match(/(<\/select>)/i);

      if (begin && end) {
        var s = begin[1] + pOptionHTML + end[1];
        pList.outerHTML = s;
      }
   }
  else {
    pList.innerHTML = pOptionHTML;
    }
  }
}

Angewendet wird sie dann so:

fillSelect(document.getElementById("combobox"), xmlHttp.responseText);

Und schon ist dieses Problem Geschichte :)

Weitere Informationen gibt es unter:
http://support.microsoft.com/kb/276228/de

Probleme mit dem visuellen Editor von WordPress

Der visuelle Editor von WordPress hat eine ganz interessante Eigenschaft bei manchen Themes. Sobald man im visuellen Editor etwas schreibt und dann ein Bild einfügt und danach einen Text schreibt so taucht dieser rechts neben dem Bild auf, anstatt unter dem Bild.

Die Lösung ist es eine editor-style.css welche in das Themeverzeichnis gepackt wird. In dieser sollte dann folgendes stehen:

html .mceContentBody {
 max-width: 640px;
}

Damit wird die maximale Breite im Editor beschränkt was diesen Effekten vorbeugt. Nun muss die CSS Datei noch in der functions.php registriert werden. Das ganze sieht dann so aus:

//Init
add_action( 'after_setup_theme', 'ocean_setup' );

//Setup
function ocean_setup() {
 add_editor_style();
}

Damit ist das Problem dann gelöst :)